YAML
YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。有趣的是,在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲
YAML 的配置文件后缀为 .yml
基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- ‘#‘表示注释
数据类型
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 纯量(scalars):单个的、不可再分的值
对象
对象键值对使用冒号结构表示 key: value
,冒号后面要加一个空格。
TOML
TOML的全称是 “Tom’s Obvious, Minimal Language”,因为它的作者是 GitHub 联合创始人 Tom Preston-Werner 。
TOML 的目标是成为一个极简的配置文件格式,TOML 被设计成可以无歧义地被映射为哈希表,从而被多种语言解析。
基本语法
- 大小写敏感
- 同样使用缩进表示层级关系
- 缩进可以使用空格,也可以使用Tab
- 可以在数组中换行
- ‘#‘表示注释
对象
对象键值对使用等号的结构 key = value
字符串
字符串和 JSON 的定义一致,只有一点除外: TOML 要求使用 UTF-8 编码。
数组
数组使用方括号包裹。空格会被忽略。元素使用逗号分隔。注意,不允许混用数据类型。
[ 1, 2, 3 ]
[ "red", "yellow", "green" ]
[ [ 1, 2 ], [3, 4, 5] ]
[ [ 1, 2 ], ["a", "b", "c"] ] # 这是可以的。
[ 1, 2.0 ] # 注意:这是不行的。
数组可以多行。也就是说,除了空格之外,方括号间的换行也会被忽略。在关闭方括号前的最终项后的逗号是允许的。
如果内容文件在两行---
之间设置了前题变量,则该文件为YAML格式。否则,内容文件将在两行+++
之间设置优先事项变量,表明它是TOML格式的。
参考菜鸟教程