YAML语法小记
YAML
概念
YAML 是 “YAML Ain’t Markup Language” 的递归缩写。它是一种直观的能够被人轻松阅读的的数据序列化语言。YAML 主要用于:
- 配置文件
- 在网络上存储或传输数据
- 作为许多语言(如 Python, Ruby, Java 等)的 datafile 格式
语法
YAML的语法比较简单,主要有下面几个:
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只允许空格( 低版本限制 )
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- ‘#’表示注释
YAML支持以下几种数据类型:
- 纯量:单个的、不可再分的值
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hash) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
下面是 YAML 的一些基本语法规则:
键值对
使用冒号(:)来分隔键和值,键值对之间使用空格或制表符进行缩进。
1 | name: John |
列表
使用短横线(-)表示一个列表项,列表项之间使用空格或制表符进行缩进。
1 | fruits: |
嵌套
可以使用缩进来表示嵌套关系,缩进的空格数不限,但同级别的元素必须使用相同数量的空格。
1 | person: |
还可以在数组中嵌套对象
1 | fruits: |
**fruits
**是一个数组,包含了三个对象,每个对象都有 **name
、color
**和 origin
三个键值对。在数组中嵌套对象时,可以使用短横线(-)表示数组的每个元素,并在元素下面缩进表示嵌套的对象。注意,缩进的空格数不限,但同级别的元素必须使用相同数量的空格。
注释
使用井号(#)来表示注释,注释从井号开始到行末结束。
1 | # 这是一个注释 |
引用:
可以使用单引号(’)或双引号(”)来引用字符串,引用的字符串可以包含特殊字符。
1 | name: 'John' |
特殊字符处理
使用双引号可以处理包含特殊字符的字符串,例如换行符、制表符等。
1 | message: "Hello,\n\tWorld!" |
下面是一个包含上述语法规则的完整 YAML 示例:
1 | yamlCopy code |
这是一个简单的包含了键值对和列表的 YAML 示例,表示了一个人的信息和爱好。需要注意的是,YAML 对缩进要求严格,因此在编写 YAML 文件时要注意缩进的正确使用。
多行字面量
在 YAML 中,竖线符号(**|
**)表示一种多行字面量的写法。使用 |
后,紧接着的多行文本会保留其换行符和缩进,不会被自动转义或折叠。
下面是一个示例:
1 | description: | |
在上面的示例中,**description
** 是一个键,其值使用了 |
符号,后面紧跟了一个多行文本块,包含了三行文本。这三行文本的换行符和缩进会被保留,不会被自动转义或折叠。这在需要保留文本格式或保留特定缩进的情况下非常有用,比如文本块、脚本、代码段等。
JSON to yaml 工具
https://www.json2yaml.com/convert-yaml-to-json