摘要
本文主要讲述了:
- 什么是 YAML
- 文件扩展名
- 语法
正文
什么是 YAML
YAML(读音:/ˈjæməl/
)常用于编写配置文件。
YAML 的初始版本发布于 2001 年 5 月 11 日。目前的最新版本是 1.2。
1.2 版本的 YAML 并不是 JSON 的严格真超集(JSON 允许使用tab
作为缩进)。
文件扩展名
.yaml
(官方推荐)或.yml
语法
因为所有不适用tab
作为缩进的 JSON 文件都是合法的 YAML 文件。本文不再赘述 JSON 语法。
大小写敏感
是
版本号
%YAML
指令用于标志 YAML 的版本号(可选)。
示例:
文档分隔符
YAML 支持在单个文件内表示多个文件。
---
表示不同文件之间的分隔符
...
表示文件的结束(可选)
示例:
缩进
- 禁止使用
tab
作为缩进(注意:JSON
允许)
- 缩进的数量不作限制,但下级的缩进必须比上级多,同级的缩进必须相等
行注释
示例:
null
数字
示例:
布尔值
true
、True
、TRUE
都为true
false
、False
、FALSE
都为false
字符串
数组
注意:-
之后至少需要跟一个空白字符。
一维数组:
或
二维数组:
1 2 3 4 5 6 7 8 9
| - - a1 - a2 - a3 - - b1 - b2 - b3 - - c1 - c2 - c3
|
或
1 2 3
| - [a1, a2, a3] - [b1, b2, b3] - [c1, c2, c3]
|
对象
注意::
之后至少需要跟一个空白字符。
示例:
1 2 3 4 5 6 7 8 9 10 11 12
| a: a1: 1 a2: 2 a3: 3 b: b1: 1 b2: 2 b3: 3 c: c1: 1 c2: 2 c3: 3
|
1 2 3
| a: { a1: 1, a2: 2, a3: 3 } b: { b1: 1, b2: 2, b3: 3 } c: { c1: 1, c2: 2, c3: 3 }
|
日期
YAML 的日期格式遵循ISO-8601
标准。
示例:
1 2 3
|
2019-01-01T12:00:00.123
|
1 2 3
|
2019-01-01T12:00:00+08:00
|
类型强制转换
!!int
表示转换为整型
!!float
表示转换为浮点数
!!bool
表示转换为布尔值
!!str
表示转换为字符串
示例:
锚点、引用与对象合并
示例:
1 2 3 4 5
| foo: &demo - 1 - 2 - 3 bar: *demo
|
相当于
1 2 3 4
| { "foo": [1, 2, 3], "bar": [1, 2, 3] }
|
示例:
1 2 3 4 5 6 7 8 9
| foo: &demo a: 1 b: 2 c: 3 bar: <<: *demo d: 4 e: 5 f: 6
|
相当于
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| { "foo": { "a": 1, "b": 2, "c": 3 }, "bar": { "a": 1, "b": 2, "c": 3, "d": 4, "e": 5, "f": 6 } }
|
特别注意:合并的对象属性可被同名属性覆盖。
示例:
1 2 3 4 5 6 7 8 9
| foo: &demo a: 1 b: 2 c: 3 bar: <<: *demo a: 4 b: 5 c: 6
|
相当于
1 2 3 4 5 6 7 8 9 10 11 12
| { "foo": { "a": 1, "b": 2, "c": 3 }, "bar": { "a": 4, "b": 5, "c": 6 } }
|
参考资料
本文对你有帮助?请支持我