官网 官方文档 在线工具 参考资料
YAML 官方解释:YAML Ain’t Markup Language,即 YAML 不是标记语言。
YAML 是一个可以用于所有编程语言的可读性非常好的序列化标准。YAML 广泛用于配置文件。
已经实现 YAML 的语言有:Ruby,Java,Perl,Python,PHP,JavaScript。
YAML 有以下优点:
可读性好易于手工维护和脚本语言的交互性好使用实现语言的数据类型(确定是难以跨语言交互数据)可以基于流来处理解析效率高XML 解析效率比 YAML 低,但是 XML 支持自定义的数据类型,有大量额外的工具来验证它的格式。
XML 和 YAML 之间没有直接的关联。
YAML 主要是一种数据序列化语言。XML 旨在向后兼容支持结构化文档的标准通用标记语言(Standard Generalized Markup Language,SGML)。 因此,XML 有许多设计限制。XML 是许多领域的先驱,YAML 从 XML 和其他技术中汲取经验教训。
JSON 中使用了 {} 和 [],难以手工维护 JSON 文件,而 YAML 使用空格缩进,既易读又易维护。
JSON 和 YAML 都旨在成为人类可读的数据交换格式。但是,JSON 最重要的设计目标是简单和通用性,并以减少可读性为代价实现这个目的。
YAML 最重要的设计目标是可读性和对序列化任意本地数据结构的支持。因此,YAML 文件非常易读,但是生成和解析过程变得更复杂。另外,在不同编程环境之间交叉使用 YAML 需要更复杂的处理,所以如果跨语言交互数据,请使用 JSON。
YAML 可以被视为 JSON 的超集,提供更优的可读性和更完整的信息模型。实际情况也是如此,每个 JSON 文件也是一个有效的 YAML 文件。如果有需要,可以轻松地从 JSON 迁移到 YAML。
YAML 使用可打印的 Unicode 字符(即非控制字符),支持 UTF-8 和 UTF-16 两种编码。
YAML 使用三个破折号(“—”)将分隔文档中的指令。如果没有指令存在,这也用于指示文档的开始。三个点(“…”)表示文档的结束,表示通信通道中不会再有新文档了。
例如,一个文件中的两个文档:
# Ranking of 1998 home runs --- - Mark McGwire - Sammy Sosa - Ken Griffey # Team ranking --- - Chicago Cubs - St Louis CardinalsYAML 支持的数据结构有三种。
对象:键值对集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)。数组:一组按序排列的值,又称为序列(sequence) / 列表(list)。标量:scalars,单个的、不可再分的值,即使是字符串也可以不用引号。用单引号或者双引号括起来的被当作字符串数据,在单引号或双引号中使用 C 风格的转义字符。对象由键值对组成,使用冒号分隔。
标量组成的对象:
hr: 65 # 相当于 JSON 的 {"hr":65}YAML 也允许将所有键值对写成一个行内对象:
people: { name: Steve, age: 30 } # 相当于 JSON 的 {"people":{"name":"Steve", "age":30}}一组相同缩进的破折号开头的行,构成一个数组。例如,标量组成的数组:
- Mark McGwire - Sammy Sosa - Ken Griffey数组可以嵌套:
- - Mark McGwire - Sammy Sosa - Ken Griffey第一个例子相当于 JSON 中的 [“Mark McGwire”, “Sammy Sosa”, “Ken Griffey”],第二个相当于 [[“Mark McGwire”, “Sammy Sosa”, “Ken Griffey”]]。
跟对象类似,也可以将数组的所有元素写在一行:
people: [Mark, Ken]YAML 使用两个感叹号强制转换数据类型:
name: !!str true # 相当于 JSON 的 {"name":"true"}& 用来建立锚点(defaults),需要同时指定锚点的名字。<< 表示合并到当前数据,* 用来通过名字引用锚点。示例:
# 相当于 JSON 的 [ { x: 1, y: 2 }, { x: 1, y: 2, r: 10, label: 'center' } ] - &CENTER { x: 1, y: 2 } - # Merge one map << : *CENTER r: 10 label: center转载于:https://www.cnblogs.com/kika/p/10851673.html
相关资源:YAML语法&用法