记录常用 YAML 语法
YAML(“YAML Ain’t a Markup Language”/”Yet Another Markup Language”)和 XML 相比更加专注于数据本身而非格式,具有较好的可读性,越来越多的被用于配置文件。
- YAML 文件的后缀名是
.yml
- YAML 可以多文件合并,适合配置文件分块的场景
基本语法
- 大小写敏感
- 以缩进表示对象层级关系(类似 Python)
- 必须用空格做缩进
- 锁进的空格数量不重要,只要相同层级的左对齐即可
- 变量/字段名后紧接
:
,注意:
后必须有个空格
- 以
#
标记单行注释,不支持多行注释 - 用
---
可以在一个文件中分割多块 yaml;...
表示文档结束
数据类型及示例
-
scalars(纯量)
-
string
str1: string1
- 字符串可以用
"
或'
包裹,也可以不加引号。- 如果有特殊字符,必须用
"
或'
包裹 '
包裹的内容会直接显示;"
会转义'
中的内容如果包含'
,则要用''
转移
- 如果有特殊字符,必须用
- 字符串可以多行表示,如果用
>
每个换行符会被转换为一个空格 -
表示多行文本
-
|
文中自动换行标志1
2
31
2
3name: | content1... content2...
1
2
3content1... content2...
|
全文最后一个换行|-
全文最后无换行|+
全文最后两个换行
-
>
文中不自动换行,以空格代替换行1
2
31
2
3name: | content1... content2...
1
2content1... content2...
>
全文最后一个换行>-
全文最后无换行>+
全文最后两个换行
-
|2
减少缩进标志 表示实际内容比当前表示的内容向前减少两个空格缩进
-
- 字符串可以用
- boolean
TRUE/True/true/FALSE/False/false
- float
3.14
或用科学表示法:3.1415e+5
- int
123
或二进制表示:0b1010_0111_0100
,中间的_
是为了人眼容易识别 - null
用’~’表示 null:
value: ~
- date
2018-02-17
, 日期必须使用 ISO 8601 格式,即 yyyy-MM-dd - datetime
2018-02-17T15:02:31+08:00
,时间使用 ISO 8601 格式,时间和日期之间使用 T 连接,最后使用+代表时区
-
- array(数组)
array 可以嵌套
- 用
-
表示: ```yml array:- element1
- element2 ```
- 用行内形式表示:
array: [element1, element2]
array: [] # 空数组
- 行内形式的字符串要用
"
包裹
- 用
- object(对象/map)
object 可以嵌套
- 多行表示:
1
2
3
4obj: field1: 1.2 field2: hello "3field": "content" # 对于 key 以数字开头的,可以用 ' 包住
- 单行表示:
obj: {field1: 1.2, field2: "hello"}
obj: {} # 空对象
- 多行表示:
-
array 元素为 object
1
2
3
4
5array: - field1: 1.2 field2: hello # 这里和上面对齐表示同级字段 - field1: 1.1 field2: world
- 表示多维数组,一般用
-
表示第一维,[]
表示剩下的维度,如:
1 |
|
引用
&xxx
标记锚点起始点、*xxx
引用锚点内容、<<:
合并到当前数据;
&
表示开启一个锚点,记录子元素或当前元素,遇到同级下个元素就停止记录。
1 |
|
1 |
|