YAML 是一种人类可读的数据序列化语言,全称为 "YAML Ain't Markup Language"(YAML 不是标记语言), 核心用于存储和传输结构化数据,常见于配置文件和数据交换场景,YAML 的配置文件后缀为 .yml。
1. 核心特点
- 可读性极强:采用缩进(空格,不支持 Tab)表示层级关系,语法接近自然语言,无需复杂标签。
- 无类型限制:支持字符串、数字、布尔值、列表、字典等多种数据类型,且可嵌套定义复杂结构。
- 跨语言兼容:几乎所有主流编程语言(Python、Java、JavaScript 等)都有解析 YAML 的库,通用性高。
- 支持注释:用 # 开头标注注释,方便文档说明,这是很多其他数据格式(如 JSON)不具备的。
2. 常见使用场景
- 配置文件:这是 YAML 最主要的用途,比如 Docker Compose(docker-compose.yml)、Kubernetes 配置、GitHub Actions 工作流、编程语言的项目配置。
- 数据交换:在需要人工编辑或查看的场景中,替代 JSON 或 XML,比如接口测试的用例数据、工具的输入输出数据。
- 文档生成:部分工具支持通过 YAML 定义结构,自动生成文档,如VitePress的frontmatter。
3. 基础语法示例
- 大小写敏感
- 缩进表示层级关系,只能使用空格,不支持 Tab。
- 键值对用冒号 ":" 分隔,键后紧跟一个空格,值可以是任意数据类型。
- 列表项用短横线 "-" 开头,后紧跟一个空格,值可以是任意数据类型。
- 字典(键值对嵌套)用空格缩进表示层级关系,键后紧跟一个空格,值可以是任意数据类型。
- 字符串可以用单引号(')或双引号(")括起来,也可以省略引号。
- 数字无需引号,支持整数和浮点数。
- 布尔值用 true/false 表示,不区分大小写。
- 注释用 # 开头,直到行尾。
yaml
# 这是注释:项目基本信息配置
project:
name: "AI寰宇空间"
version: 1.0.0
is_active: true
authors:
- name: huanyu01
role: 开发者
- name: huanyu01
role: 测试