我正在使用Python和PyYAML编写一个文件类型转换器,用于我多次翻译和从YAML文件转换的项目.然后,这些文件由我无法控制的单独服务使用,因此我需要将YAML转换回原来相同的状态.我的原始文件包含以下部分:
key:
- value1
- value2
- value3
使用yaml.load()计算{key:[value1,value2,value3]}.当我将其翻译回YAML时,我的新文件如下所示:
key: [value1,value2,value3]
我的问题是,就YAML文件的各种语言解析器而言,这两种形式是否相同.显然使用PyYaml,这些是等价的,但这适用于Ruby或应用程序正在使用的其他语言吗?如果没有,则应用程序将无法正确显示数据.
解决方法:
是的,对于遵循规范的任何YAML解析器,它们是等效的.你可以在这里阅读规范:http://www.yaml.org/spec/1.2/spec.html
Section 3.2.3.1特别相关(强调我的):
3.2.3.1. Node Styles
Each node is presented in some style, depending on its kind. The node style is a presentation detail and is not reflected in the serialization tree or representation graph. There are two groups of styles. Block styles use indentation to denote structure; In contrast, flow styles styles rely on explicit indicators.
为了澄清,节点是YAML中的任何结构,包括数组(在规范中称为序列).单行样式称为流程序列(参见第7.4.1节),多行样式称为块序列(第8.2.1节).兼容的解析器将两者反序列化为相同的对象.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。