英文缩写表示为“YAML” – YAML Ain’t Markup Lanaguage
yaml非标记性语言,而是一种序列化语言,旨在让人更容易阅读。
一. 快速入门
1.1 基本规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只使用空格
- 缩进的空格数目不重要,只要想同级的元素左侧对齐即可。
- # 表示注释
1.2 数据结构
yaml支持三种数据结构
对象,即字典,哈希,映射
数组,即列表,序列
纯量,单个,不可拆分的值。字符串,数字,浮点数,布尔等
1.3 字典
使用 冒号加空格(“: “)结构表示。
1
2
3
--- #常量字典 常量-常量
ab: cd
ab: {ha: he, fuck: you}#行内字典表达式
1.4 数组
一组 连词线加空格 “- “开头的行,构成的一个数组。
1
2
3
4
5
6
7
8
--- #常量数组 常量-数组
animal:
- cat
- dog
- bird
animal: [cat, dog, bird]
1.5 混合
1
2
3
4
5
6
7
8
9
10
11
--- #数组字典
-
name: liminglin
sex: man
-
name: lihao
sex: man
--- #字典数组
baskerballplayer:
- kobe
- jerry
1.6 纯量
- 字符串
- 整数
- 浮点数
- 布尔值
- 时间,ISO8601格式: 2001-12-14t21:59:43.10-05:00
- 日期,ISO8601格式date: 1976-07-31
- Null, 用‘~’表示
1.7 字符串
- 字符串默认不使用引号表示,但是如果字符串中包含特殊字符,则需要放在引号中,双引号不会对特殊字符进行转义
- 单引号中如果还有单引号, 必须使用连续的单引号进行转义
- 字符串可以写成多行,从第二行开始必须有一个空格缩进,换行符将会被转换成空格。
如果想保留换行符,可以使用 ‘ ’ 来保留换行符,也可以使用 ‘>’ 来折叠换行符。同时在’ ‘后面的+号表示保留字符串最后的行号,-号表示删除字符串末尾的行号。
二. 语法
yaml除了支持缩进语法以外,还支持部分的非缩进标识的流语法。数组列表使用 [] 括号表示, 字典映射使用中括号{}表示。
2.1 重复引用
& 建立锚点, «表示合并到当前数据, * 表示引用锚点。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
defaults: &defaults
adapter: postgres
host: localhost
development:
database: myapp_development
<<: *defaults
test:
database: myapp_test
<<: *defaults
----------------------------------------------
defaults:
adapter: postgres
host: localhost
development:
database: myapp_development
adapter: postgres
host: localhost
test:
database: myapp_test
adapter: postgres
host: localhost
1
2
3
4
5
6
7
8
- &default A
- B
- C
- *default
---------------
- A
- B
- A
2.2 文档开始结束
’—’ 三个破折号表示的是一个 指令集的开始。也可以作为文档的开始。三个点号”…“代表着文档的结束
2.3 复合键
一个 问号加空格表示一个复合键。