什么是YAML

最近接连碰上YAML,从未接触过它所以配置文档的时候处处蹩脚,于是决定了解一下何为YAML。

YAML是”YAML Ain’t a Markup Language”(YAML不是一种标记语言)的递归缩写。

在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

而在官方文档上则是这样描述的:

YAML: YAML Ain’t Markup Language

What It Is: YAML is a human friendly data serialization standard for all programming languages.

他最大的特色就是——缩进:

  • 数据结构可以用类似大纲的缩排方式呈现
  • 结构通过缩进来表示
  • 连续的项目通过减号“-”来表示
  • map结构里面的key/value对用冒号“:”来分隔。

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
house:
family:
name: Doe
parents:
- John
- Jane
children:
- Paul
- Mark
- Simone
address:
number: 34
street: Main Street
zipcode: 12345

这个文件的顶层由七个键值组成:其中一个键值”house”,是两个元素构成的数组(或称清单),这清单中的两个元素同时也是包含了三个键值的散列表。

文件中重复的部分用这个方法处理:

使用锚点(**&)和引用(***)标签将”bill-to”散列表的内容复制到”ship-to”散列表。

也可以在文件中加入选择性的空行,以增加可读性。

在一个文件中,可同时包含多个文件,并用”“分隔。

选择性的符号”“可以用来表示文件结尾(在利用流的通信中,这非常有用,可以在不关闭流的情况下,发送结束信号)。

注意在YAML中,字符串不一定要用双引号标示。

另外,在缩进中空白字符的数目并不是非常重要,只要相同层次结构的元素左侧对齐就可以了(但是不能使用TAB字符)。

参考文献

https://yaml.org/