YAML 文件中不同格式的含义详解 - 教程

YAML (YAML Ain’t Markup Language) 是一种人类可读的数据序列化格式,以下是 YAML 中常见格式及其含义的详细说明:

1. 键值对 (Key-Value Pairs)

最基本的元素,表示一个属性和它的值

name: John Doe # 字符串值
age: 30 # 数字值
is_active: true # 布尔值

2. 列表/数组 (Lists/Arrays)

用短横线 - 表示列表项

fruits:
- Apple
- Banana
- Orange

3. 嵌套结构

通过缩进表示层级关系

person:
name: Alice
address:
street: 123 Main St
city: Anytown
zip: 12345

4. 多行字符串

有三种表示方式:

保留换行符 (|)

description: |
This is a multi-line
string that preserves
line breaks.

折叠换行符 (>)

description: >

This is a multi-line
string where line breaks
are converted to spaces.

纯量块 (无符号)

description: This is a \
single line string with \
escaped line breaks.

5. 锚点与引用 (&*)

用于避免重复定义

defaults: &defaults
adapter: postgres
host: localhost
development:
<<
: *defaults # 合并defaults内容
database: dev_db

6. 数据类型表示

字符串 (默认不需要引号)

name: John
quoted: "需要引号的字符串" # 包含特殊字符时需要

数字

integer: 123
float: 3.14
scientific: 1.23e+4

布尔值

true_value: true # 或 True, TRUE
false_value: false # 或 False, FALSE

null 值

null_value: null # 或 Null, NULL, ~

时间戳

datetime: 2025-05-30T10:55:20Z
date: 2025-05-30

7. 特殊格式

流式集合 (Flow Style)

{}[] 表示紧凑格式

person: {
name: John, age: 30
}
colors: [red, green, blue]

标签 (Tags)

显式指定数据类型

not-date: !!str 2025-05-30
binary-data: !!binary |
R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
+f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwn
uNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=

8. 文档分隔符

用于分隔多个YAML文档

---
# 文档1
name: Doc1
...
---
# 文档2
name: Doc2

重要注意事项

  1. 缩进:必须使用空格(通常2个),不能使用Tab
  2. 大小写敏感keyKey 是不同的
  3. 特殊字符:包含 :, {, }, [, ], ,, &, * 等字符的字符串需要引号
  4. 注释:以 # 开头,到行尾结束

YAML vs JSON 对应关系

YAML 格式JSON 等效
key: value{"key": "value"}
- item1["item1"]
parent: {child: value}{"parent": {"child": "value"}}

YAML 的这些格式特性使其非常适合用于配置文件(如Kubernetes、Docker Compose等),比JSON更易读和编写。

posted @ 2025-07-22 19:26  yfceshi  阅读(22)  评论(0)    收藏  举报