通人性化的YAML入门
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。
在线编辑器:YAML、YML在线编辑器(格式化校验)-BeJSON.com
YAML介绍
YAML 的配置文件后缀为 .yml,如:daokun.yml 。

YAML现在很受欢迎,很多的配置文件都是由YAML写的

YAML和其他语言的对比,对比XML和JSON更加的简洁,更容易阅读

基本语法
大小写敏感
1
2daokun: 1
Daokun: 2使用缩进表示层级关系
缩进不允许使用tab,只允许空格
缩进的空格数不重要,只要相同层级的元素左对齐即可
1
2
3
4
5
6
7
8person:
name: daokun
age: 22
gender: male
card:
BOC: 20RMB
ICBC: 15RMB
ABC: 90RMB‘#’表示注释
1
# 这就是一个注释,和python单行注释一样
一个文件中可以包含多个文件的内容
1
2
3
4
5
6
7
8
9
10# --- 三个破折号表示一份内容的开始
# ... 三个小数点表示一份内容的结束(非必需)
# 这是第一份内容
...
# 这是第二份内容
...
数据类型
对象(Mapping)
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
注意冒号后面要加一个空格!
1 | key: value |
支持多层嵌套
1 | person: |
支持流式风格( Flow style)的语法(用花括号包裹,用逗号加空格分隔,类似 JSON)
1 | person: { person1: daokun, person2: afu} |
使用问号“?”声明一个复杂对象,允许你使用多个词汇(数组)来组成键
1 | ? |

数组
破折号+空格
1 | person: |
也支持内联格式(Inline Format)来表达(用方括号包裹,逗号加空格分隔,类似 JSON)
1 | person: [daokun, afu, ale, piaoke, liuzhi ] |
支持多维数组(用缩进表示层级关系)
1 | person: |
纯量(标量)
纯量(scalars):单个的、不可再分的值
字符串
字符串一般不需要用引号包裹,但是如果字符串中使用了反斜杠“\”开头的转义字符就必须使用引号包裹
1 | strings: |
保留换行(Newlines preserved)
使用竖线符“ | ”来表示该语法,每行的缩进和行尾空白都会被去掉,而额外的缩进会被保留
1 | # YAML |
折叠换行(Newlines folded)
使用右尖括号“ > ”来表示该语法,只有空白行才会被识别为换行,原来的换行符都会被转换成空格
1 | # YAML |
布尔值
真 | 假 |
---|---|
true | false |
Ture | False |
TRUE | FALSE |
yes | no |
Yes | No |
YES | NO |
另外还支持的标量有整数,浮点数,时间戳。
引用与合并
引用
& 锚点和 ***** 别名,可以用来引用:
1 | # 设置afu为daokun的别称 |
合并
配合合并标签“<<”使用可以与任意数据进行合并
1 | daokun: &afu # 添加名为 base 的锚点 |
在线编辑器:YAML、YML在线编辑器(格式化校验)-BeJSON.com
参考文章和视频: