YAML文件
相较于JSON,YAML的可读性更好,利用缩进表示结构省去了诸如{}或[]等符号表示。主要用于配置文件,如K8S、DevOps等。
基本特点
- 缩进必须使用空格(通常是2或4个空格),不能用Tab。
- 支持
#注释标注
- 大小写敏感
- 基本元素采用键值对定义,如
key: value(冒号后面一般都需要加空格)
数据类型
标量(不可再分类型)
- 字符串:正常不需要引号,但如果包含特殊字符(如
:, #, {, }),则需要用单引号 ' 或双引号 " 括起来
- 布尔值:大写或小写的
true/false
- 整数/浮点数
- 空值:
null/~
序列 List
格式:短横线+同样的缩进
诸如:
1
2
3
4
|
listVar:
- a
- b
- c
|
映射(对象/字典) Mapping
诸如:
1
2
3
4
|
mapVar:
a: aa
b: bb
c: cc
|
多行字符串
- 字面块(
|):保留换行符
- 折叠块(
>):将换行符折叠为空格
诸如:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
message: |
This is a long
multi-line string
that will preserve its line breaks.
# 解析:This is a long\nmulti-line string\nthat will preserve its line breaks.\n"
message: >
This is a long
multi-line string
where lines are folded into spaces.
# 解析:This is a long multi-line string where lines are folded into spaces.\n"
|
结构嵌套
诸如:
1
2
3
4
5
6
7
8
9
10
|
users: # 这是一个键(key),它的值是一个列表(List)
- name: John # 这是列表中的第一个元素,它是一个字典/映射(Mapping)
age: 30 # 这是第一个元素字典中的一个键值对
hobbies: # 这是第一个元素字典中的一个键,它的值又是一个列表
- hiking # 这是“hobbies”列表中的第一个元素
- reading # 这是“hobbies”列表中的第二个元素
- name: Jane # 这是列表中的第二个元素,它是另一个字典/映射
age: 25
hobbies:
- gaming # 这是第二个元素中“hobbies”列表里的元素
|
对应的JSON格式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
{
"users": [
{
"name": "John",
"age": 30,
"hobbies": ["hiking", "reading"]
},
{
"name": "Jane",
"age": 25,
"hobbies": ["gaming"]
}
]
}
|
多文档支持
一个yaml文件可以包含多个yaml定义,并用---分隔