不同的YAML数组表示形式

发布于 2021-01-29 16:32:58

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

key:
- value1
- value2
- value3

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

key: [value1,value2,value3]

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

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    是的,对于遵循该规范的任何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)。兼容的解析器会将两个序列反序列化为相同的对象。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看