不同的YAML数组表示形式


问题内容

我正在使用Python和PyYAML为一个项目编写文件类型转换器,在该项目中我要多次转换YAML文件。然后,这些文件由我无法控制的单独服务使用,因此我需要将YAML转换为与最初获得的服务相同的形式。我的原始文件包含以下部分:

key:
- value1
- value2
- value3

评估{key: [value1,value2,value3]}使用yaml.load()。当我将其转换回YAML时,我的新文件如下所示:

key: [value1,value2,value3]

我的问题是,就YAML文件的各种语言解析器而言,这两种形式是否等效。显然使用PyYaml是等效的,但这是否适用于应用程序正在使用的Ruby或其他语言?否则,应用程序将无法正确显示数据。


问题答案:
是的,对于遵循该规范的任何YAML解析器,它们都是等效的。您可以在此处阅读规格: http
//www.yaml.org/spec/1.2/spec.html

第3.2.3.1节特别相关(强调我的意思):

3.2.3.1。节点样式

每个节点根据其种类以某种 样式表示节点样式是表示形式的细节,不会反映在序列化树或表示图中。
有两组样式。块样式使用缩进来表示结构;相反,流样式样式依赖于显式指示器。

为了明确起见, 节点 是YAML中的任何结构,包括数组(在规范中称为 序列
)。单行样式称为流序列(请参见7.4.1),多行样式称为块序列(请参见8.2.1)。兼容的解析器会将两个序列反序列化为相同的对象。