了解人类友好的数据序列化标准。学习它的语法、用法,以及为什么它成为了配置文件的首选格式。
YAML (YAML Ain't Markup Language) 是一种人类可读的数据序列化语言。它常用于配置文件和数据存储或传输的应用中。YAML 的设计目标是易于人类阅读和编写,同时也易于机器解析和生成。
YAML 广泛应用于各种场景,特别是在需要人类可读配置的地方。
Docker Compose、Kubernetes、Ansible 等工具的首选配置格式。
GitHub Actions、GitLab CI、CircleCI 等使用 YAML 定义工作流。
在应用程序之间传输复杂的数据结构,支持引用和锚点。
为什么 YAML 成为配置文件的首选格式?
使用缩进和简洁的语法,比 JSON 和 XML 更易于阅读和编写。
可以添加注释来解释配置,这是 JSON 所不具备的功能。
支持字符串、数字、布尔值、数组、对象、日期等多种数据类型。
通过锚点(&)和别名(*)实现数据重用,避免重复。
YAML 使用缩进来表示层级关系,支持键值对、列表和多行字符串等结构。
使用空格(不是 Tab)进行缩进,通常是 2 个空格。缩进表示数据的嵌套关系。
键和值之间使用冒号和空格分隔(key: value)。
列表项使用短横线(-)开头,后跟空格。
使用
# YAML Example
name: John Doe
age: 30
active: true
skills:
- JavaScript
- Python
- YAML
address:
city: New York
country: USA
bio: |
Multi-line string
with preserved newlines对比这两种流行的数据格式。
| 特性 | YAML | JSON |
|---|---|---|
| 可读性 | 极易读(简洁语法) | 较易读(有括号) |
| 注释支持 | 支持(# 注释) | 不支持 |
| 语法复杂度 | 较复杂(缩进敏感) | 简单(明确的括号) |
| 数据类型 | 丰富(日期、引用等) | 基础(6 种类型) |
| 文件大小 | 较小(无冗余符号) | 较大(括号和引号) |
如何高效使用 YAML 并避免常见误区。
YAML 规范要求使用空格进行缩进,不要使用 Tab 键,推荐使用 2 个空格。
大多数情况下字符串不需要引号,但包含特殊字符时需要使用单引号或双引号。
使用 & 定义锚点,使用 * 引用别名,避免重复配置。
在文件开头使用 %YAML 1.2 声明 YAML 版本,确保解析器兼容性。
这取决于使用场景。YAML 更适合配置文件,因为它支持注释且更易读。JSON 更适合 API 数据传输,因为它解析速度更快且语法更简单。
不是。YAML 允许使用任意数量的空格进行缩进,但同一层级必须保持一致。2 个空格是最常见的约定。
YAML 解析器可能存在安全风险,特别是在处理不受信任的输入时。建议使用安全模式解析器,避免执行任意代码。