这是一个用于理解和编写 YAML 格式配置文件的快速参考备忘单。
YAML 是一种数据序列化语言,旨在让人类可以直接编写和阅读。
.yaml
或 .yml
扩展名结尾n1: 1 # 整数
n2: 1.234 # 浮点数
s1: 'abc' # 字符串
s2: "abc" # 字符串
s3: abc # 字符串
b: false # 布尔类型
d: 2015-04-05 # 日期类型
{
"n1": 1,
"n2": 1.234,
"s1": "abc",
"s2": "abc",
"s3": "abc",
"b": false,
"d": "2015-04-05"
}
使用空格进行缩进。元素各部分之间必须有空格。
some_thing: &VAR_NAME foobar
other_thing: *VAR_NAME
{
"some_thing": "foobar",
"other_thing": "foobar"
}
# 单行注释示例
# 块级注释示例
# 注释行 1
# 注释行 2
# 注释行 3
parent: &defaults
a: 2
b: 3
child:
<<: *defaults
b: 4
{
"parent": {
"a": 2,
"b": 3
},
"child": {
"a": 2,
"b": 4
}
}
values: &ref
- Will be
- reused below
other_values:
i_am_ref: *ref
{
"values": [
"Will be",
"reused below"
],
"other_values": {
"i_am_ref": [
"Will be",
"reused below"
]
}
}
---
document: 这是文档 1
---
document: 这是文档 2
YAML 使用 ---
来分隔指令和文档内容。
- Mark McGwire
- Sammy Sosa
- Ken Griffey
[
"Mark McGwire",
"Sammy Sosa",
"Ken Griffey"
]
attributes:
- a1
- a2
methods: [getter, setter]
{
"attributes": ["a1", "a2"],
"methods": ["getter", "setter"]
}
children:
- name: Jimmy Smith
age: 15
- name: Jimmy Smith
age: 15
-
name: Sammy Sosa
age: 12
{
"children": [
{"name": "Jimmy Smith", "age": 15},
{"name": "Jimmy Smith", "age": 15},
{"name": "Sammy Sosa", "age": 12}
]
}
my_sequences:
- [1, 2, 3]
- [4, 5, 6]
-
- 7
- 8
- 9
- 0
{
"my_sequences": [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9, 0]
]
}
Mark McGwire: { hr: 65, avg: 0.278 }
Sammy Sosa: { hr: 63, avg: 0.288 }
{
"Mark McGwire": {
"hr": 65,
"avg": 0.278
},
"Sammy Sosa": {
"hr": 63,
"avg": 0.288
}
}
Jack:
id: 1
name: Franc
salary: 25000
hobby:
- a
- b
location: { country: "A", city: "A-A" }
{
"Jack": {
"id": 1,
"name": "Franc",
"salary": 25000,
"hobby": ["a", "b"],
"location": {
"country": "A",
"city": "A-A"
}
}
}
基于 YAML.org 参考卡片。
% |
指令指示符 |
--- |
文档头 |
... |
文档结束符 |
? |
键指示符 |
: |
值指示符 |
- |
嵌套序列条目指示符 |
, |
分隔内联分支条目 |
[] |
包围内联序列分支 |
{} |
包围内联键控分支 |
& |
锚点属性 |
* |
别名指示符 |
= |
默认“值”映射键 |
<< |
从另一个映射合并键 |
----------- | |||
---|---|---|---|
'' |
包围内联未转义标量 | ||
" |
包围内联转义标量 | ||
| |
块标量指示符 | ||
> |
折叠标量指示符 | ||
- |
去除 chomp 修饰符 ( | - 或 >- ) |
||
+ |
保留 chomp 修饰符 ( | + 或 >+ ) |
||
1-9 |
显式缩进修饰符 ( | 1 或 >2 )。 修饰符可以组合 ( | 2- , >+1 ) |
none |
未指定标签 (由应用程序自动解析) |
! |
非特定标签 (默认为 !!map /!!seq /!!str ) |
!foo |
主标签 (按约定,表示本地 !foo 标签) |
!!foo |
次要标签 (按约定,表示 tag:yaml.org,2002:foo ) |
!h!foo |
需要 %TAG !h! <prefix> (然后表示 <prefix>foo ) |
!<foo> |
逐字标签 (始终表示 foo ) |
# |
注释指示符 |
`@ |
两者均保留供将来使用 |
!!map |
{哈希表, 字典, 映射} |
!!seq |
{列表, 数组, 元组, 向量, 序列} |
!!str |
Unicode 字符串 |
!!set |
{樱桃, 李子, 苹果} |
!!omap |
[一: 1, 二: 2] |
{~, null} |
Null (无值)。 |
[1234, 0x4D2, 02333] |
[十进制整数, 十六进制整数, 八进制整数] |
[1_230.15, 12.3015e+02] |
[定点浮点数, 指数浮点数] |
[.inf, -.Inf, .NAN] |
[无穷大 (浮点数), 负无穷大, 非数字] |
{Y, true, Yes, ON} |
布尔真 |
{n, FALSE, No, off} |
布尔假 |