 记录常用 YAML 语法
记录常用 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: [] # 空数组
- 行内形式的字符串要用"包裹
- -元素标记和数组名可以缩进相同,也可以缩进 +1
 
- 用
- 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 |  |