目录
- 一、简介
- 二、基本语法
- 三、数据类型
- 四、数据结构
一、简介
YAML 是一种较为人性化的数据序列化语言,可以配合目前大多数编程语言使用。
YAML 的语法比较简洁直观,特点是使用空格来表达层次结构,其最大优势在于数据结构方面的表达,所以 YAML 更多应用于编写配置文件,其文件一般以 .yml 为后缀。
二、基本语法
1. 大小写敏感。 大小视作不同变量
version: 1.12
Version: 1.12
- 1
- 2
2. 使用#
表示注释。只支持单行注释
# 这是注释内容
# 这是另一行注释内容
version: 1.12
- 1
- 2
- 3
3. 缩进表示层级关系。 使用空格缩进(不能使用Tab键), 缩进空格数量无所谓,但是必须保持左对齐
test:
# 缩进一
value_1: 1
value_2: 2
value_3:
# 缩进二
value_3_1: 3_1
value_3_1: 3_1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
三、数据类型
1. 字符串
- 默认不需要引号包裹
strings: - Hello without quote # 不用引号包裹 - Hello world # 拆成多行后会自动在中间添加空格 - 'Hello with single quotes' # 单引号包裹 - "Hello with double quotes" # 双引号包裹 - "I am fine. \u263A" # 使用双引号包裹时支持 Unicode 编码 - "\x0d\x0a is \r\n" # 使用双引号包裹时还支持 Hex 编码 - 'He said: "Hello!"' # 单双引号支持嵌套"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2. 布尔值
-
true
、yes
(不分大小写)为真 。false
、no
(不分大小写)“No”和“NO”为假boolean: - true # True、TRUE - yes # Yes、YES - false # False、FALSE - no # No、NO
- 1
- 2
- 3
- 4
- 5
3. 数值类型
- 包括整数类型和浮点类型
int: - 666 - 0001_0000 # 二进制表示 float: - 3.14 - 6.8523015e+5 # 使用科学计数法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
3. 空类型
-
null
Null
~
都代表空,不指定默认值也为空kong: - null - Null - ~ -
- 1
- 2
- 3
- 4
- 5
4. 时间戳类型
- 支持 ISO 8601格式的时间数据
date1: 2020-05-26 date2: 2020-05-26T01:00:00+08:00 dete3: 2020-05-26T02:00:00.10+08:00 date4: 2020-05-26 03:00:00.10 +8
- 1
- 2
- 3
- 4
5. 类型转换
- 使用
!!
强制转换类型a: !!float '666' # !! 为严格类型标签 b: '666' # 其实双引号也算是类型转换符 c: !!str 666 # 整数转为字符串 d: !!str 666.66 # 浮点数转为字符串 e: !!str true # 布尔值转为字符串 f: !!str yes # 布尔值转为字符串
- 1
- 2
- 3
- 4
- 5
- 6
四、数据结构
1. 对象 。 键值对应关系
- 使用冒号+空格
:
表示version: 1.12
- 1
- 多层嵌套
version: major: 1 minor: 12
- 1
- 2
- 3
- 支持流式风格(Flow Style)。花括号包裹,逗号分隔
# 正常风格 version: major: 1 minor: 12 # 流式风格 version: {major: 1, minor: 2}
- 1
- 2
- 3
- 4
- 5
- 6
- 使用
?
表示复杂对象,键
可以是任意类型# 正常类型 version: major: 1 minor: 12 # 复杂类型 这里使用数组做键 相当于{[version_1,version_2]: 1.12} ? - version_1 - version_2 : 1.12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
``
2. 数组
- 表示方式为破折号加空格
# 相当于json的 {version: [major: 1, minor: 12]} version: - major: 1 - minor: 12
- 1
- 2
- 3
- 4
- 支持内联格式(Inline Format)。方括号包裹,逗号加空格分隔
# 相当于json的 {version: [major: 1, minor: 12]} # 正常格式 version: - major: 1 - minor: 12 # 内联格式 version: [major: 1, minor: 12]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 多维数组(缩进表示层级关系)
# 相当于json的 {version: [major: 1, minor: 12]} # 正常格式 version: - - 1 - 2 - 3 - - 1 - 2 - 3 # 内联格式 version: [[1,2,3], [1,2,3]]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
这里一些参考, ????
- 一文看懂 YAML
- YAML 架构参考
- 使用 Azure Pipelines 构建 GitHub 存储库的循序渐进指南
- YAML:可能并不是那么完美