YAML与TOML

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格式的。


参考 Segment Fault

参考菜鸟教程

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus