YAML 简介
如果你还没有接触过 YAML,只要在网上多留意一下,你就会发现很多项目都在使用它。YAML 是一种面向数据的、人类可读的序列化语言,许多项目中都有它的身影,包括 OpenAPI、Docker、Kubernetes 和 Ansible playbooks 等等。
YAML 最初是 Yet Another Markup Language 的首字母缩写,但现在更常被称为 YAML Ain't Markup Language。这有点像 GNU 的缩写(GNU is Not Unix),或者 Bing! 的缩写(Bing! is not google!)。
下图展示了 YAML 的基本格式,后面会围绕这些基本构成展开学习。

本文旨在为您提供 YAML 的简要概述。通过本文的学习,足以让您弄懂和使用 YAML。
说明:
本文只对 YAML 做基本的讲解和介绍,您可以在 YAML 网站上了解更多内容以及一些更复杂的话题。
YAML 元素
如上图所示,一个 YAML 文件由许多不同的元素构成。这些元素组合在一起,可以用来描述各种各样的结构。YAML 的使用场景包括描述跨语言类、API 数据结构以及虚拟机和容器的部署指令等内容。
YAML 元素大多基于 KV 键值对,我们可以将它们视为严格的 KV:
Key: Value
其中,Value
可以是简单值(标量值),也可以是更为复杂的数据组成的集合。
YAML 是 JSON 的超集,因此,在构造 YAML 数据时,我们可以使用 JSON 样式的序列和映射。
a_json_style_map: {"K": "V"}
a_json_style_sequence: ["pink", "red", "red", "cat", 123, 234, 345]
提示
可以使用本站提供的 YAML 转 JSON 工具,在线把 YAML 格式文本转换为 JSON 格式。
空格和锁进
这里有一个需要着重强调的问题 —— 你务必要知道,在 YAML 中,使用空格来缩进,而不是制表符。此外,元素之间必须有空格。
例如,下面的写法是正确的:
Key: Value
而下面的写法是错误的:
Key:Value
^^ 冒号后面缺少空格
文档开始和结束
为 YAML 文档定义开始和结束是可选的。
要定义文档的开始,请在文档顶部插入 ---
字符(即 3 个短横线);要结束一个文档,请在文档最后插入 ...
字符。
YAML 注释
在 YAML 文档中,在一行的前面插入 #
符号表示该行是注释。#
符号也可插入一行的任意位置,它后面的文本都表示注释。
例如:
# 这是一行注释
Key: Value # 这是另一个注释
标量值
简单的 Key-Value 对,我们称其为标量值。下面是一些使用标量值 KV 对的例子:
# value 为数字
age: 32
# value 为字符串
name: "赵勇"
# value 为字符串,但是未使用双引号
address: 广东省深圳市福田区福田大厦9楼
# value 为布尔值
auto_rebuild: true
# key/value 里面含有空格
full name: Jerry Ben
# value 为 null
favorites: null
列表和集合
列表和集合成员是以同一缩进级别开始的行,以短横线 -
开头,后面跟一个空格。
例如:
# 关于豪华汽车的列表
Fancy-Cars
- Porsche
- Aston Martin
- Bentley
多行集合
YAML 元素的 key 可以是多行,这也称为复合键(Complex Key)。我们可在问号 ?
后加上管道符号 |
,以标记多行 key 的开始:
# 多行 key,已 ?| 开始作为标记
?|
starting a complex
key with many
lines
: and here comes the value!
嵌套集合
在 YAML 中。你也可以使用深度嵌套集合:
# Car information
- Driver
name: Francis Black
age: 21
Driving license type:
- full car license
- racing license formula V : details
license id: ABC12345
expiry date: 2017-12-28
字典
字典由 Key: Value
格式组成,其内容带有缩进:
CarDetails:
make: Porsche
model: 911
fuel: Petrol
还可以像下面这样把列表和字典一起使用:
# Car information
- Driver
name: Francis Black
age: 21
Driving license type:
- full car license
- racing license formula V
全文完!
上面就是一些关于 YAML 格式的基础知识,希望对你了解 YAML 有一定帮助。如需更深入学习 YAML,可以参考 YAML 官网上的资料。