YAML语言介绍
YAML是一个类似 XML、JSON 的标记性语言。它强调以数据为中心,并不是以标识语言为重点。因而YAML本身的定义比较简单,号称"一种人性化的数据格式语言"。
<heima> <age>15</age> <address>Beijing</address> </heima>
heima: age: 15 address: Beijing
YAML的语法比较简单,主要有下面几个:
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只允许空格( 低版本限制 )
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- '#'表示注释
YAML支持以下几种数据类型:
- 纯量:单个的、不可再分的值
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hash) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
1. 布尔类型
# 纯量, 就是指的一个简单的值,字符串、布尔值、整数、浮点数、Null、时间、日期 # 1 布尔类型 c1: true (或者True)
2. 整型
# 2. 整型 c2: 234
3. 浮点型
# 3. 浮点型 c3: 3.14
4. null类型
# 4. null类型 c4: ~ # 使用~表示null
5. 日期类型
# 5. 日期类型 c5: 2018-02-17 # 日期必须使用ISO 8601格式,即yyyy-MM-dd
6. 时间类型
# 6. 时间类型 c6: 2018-02-17T15:02:31+08:00 # 时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区
7. 字符串类型
# 7 字符串类型 c7: heima # 简单写法,直接写值 , 如果字符串中间有特殊字符,必须使用双引号或者单引号包裹 c8: line1 line2 # 字符串过多的情况可以拆成多行,每一行会被转化成一个空格
8. 对象
# 对象 # 形式一(推荐): heima: age: 15 address: Beijing # 形式二(了解): heima: {age: 15,address: Beijing}
9. 数组
# 数组 # 形式一(推荐): address: - 顺义 - 昌平 # 形式二(了解): address: [顺义,昌平]
# 对象数组格式一 users: - name: Tom age: 4 - name: Jerry age: 5 # 对象数组格式二 users: - name: Tom age: 4 - name: Jerry age: 5 # 对象数组缩略格式 users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ]
10. 字符串显示\n
>
:显示末尾\n
。
|-
:显示中间\n
。
paragraph: > Blank lines denote paragraph breaks content: |- Or we can auto convert line breaks to save space
结果
"paragraph": "Blank lines denote paragraph breaks\n", "content": "Or we\ncan auto\nconvert line breaks\nto save
11. 参数共享
alias: &foo bar: baz alias_reuse: *foo
结果:
space", "alias": { "bar": "baz" }, "alias_reuse": { "bar": "baz" }
12. 多层级配置
object: key: value array: - null_value: - boolean: true - integer: 1 - alias: &example aliases are like variables - alias: *example - test: key01: value01
结果:
"object": { "key": "value", "array": [ { "null_value": null }, { "boolean": true }, { "integer": 1 }, { "alias": "aliases are like var }, { "alias": "aliases are like var }, { "test": { "key01": "value01" } } ] }
小提示:
1 书写yaml切记
:
后面要加一个空格2 如果需要将多段yaml配置放在一个文件中,中间要使用
---
分隔3 下面是一个yaml转json的网站,可以通过它验证yaml是否书写正确