什么是 YAML?

YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化语言,常用于配置文件和数据交换。它使用缩进来表示结构,使其比 JSON 或 XML 更易于阅读复杂的嵌套数据。

快速了解

全称YAML Ain't Markup Language
创建时间2001 年由 Clark Evans、Ingy döt Net、Oren Ben-Kiki 创建
规范文档官方规范

工作原理

YAML 使用空白缩进来表示结构,无需括号或标签。它支持多种数据类型,包括字符串、数字、布尔值、null、数组(序列)和对象(映射)。YAML 允许注释(以 # 开头)、多行字符串以及用于重用内容的锚点和别名。它是 JSON 的超集,这意味着有效的 JSON 也是有效的 YAML。YAML 广泛用于 DevOps 工具,如 Docker Compose、Kubernetes、Ansible 和 CI/CD 管道。

主要特点

  • 使用缩进表示结构(只能用空格,不能用制表符)
  • 支持 # 符号注释
  • 使用 | 和 > 操作符支持多行字符串
  • 锚点(&)和别名(*)用于内容重用
  • 是 JSON 的超集 - 所有 JSON 都是有效的 YAML
  • 用 --- 分隔的多文档支持

常见用途

  1. 配置文件(Docker Compose、Kubernetes)
  2. CI/CD 管道定义(GitHub Actions、GitLab CI)
  3. 基础设施即代码(Ansible、CloudFormation)
  4. API 规范(OpenAPI/Swagger)
  5. 静态网站生成器(Jekyll、Hugo)

示例

loading...
Loading code...

常见问题

YAML 和 JSON 有什么区别?应该选择哪个?

YAML 使用缩进表示结构,支持注释,可读性更好,适合配置文件。JSON 语法更严格,解析更快,是数据交换的标准格式。选择建议:配置文件(如 Docker、Kubernetes)用 YAML;API 数据传输用 JSON。YAML 是 JSON 的超集,所有 JSON 都是有效的 YAML。

YAML 中为什么不能使用 Tab 缩进?

YAML 规范明确禁止使用 Tab 字符进行缩进,只允许使用空格。这是因为不同编辑器对 Tab 的显示宽度不同,可能导致解析错误或意外的层级关系。建议在编辑器中设置将 Tab 自动转换为空格(通常是 2 个空格)。

YAML 中如何表示多行字符串?

YAML 提供两种多行字符串语法:1)管道符 | 保留换行符,文本按原样保留;2)大于号 > 将换行符折叠为空格,适合长段落。还可以添加 - 或 + 控制末尾换行符的处理。例如 |+ 保留所有末尾换行,|- 删除末尾换行。

YAML 中的锚点和别名是什么?

锚点(&)和别名(*)用于避免重复内容。使用 &name 定义锚点,使用 *name 引用它。例如定义 defaults: &defaults 后,可以用 <<: *defaults 合并到其他映射中。这在配置文件中特别有用,可以定义共享配置并在多处复用。

如何避免 YAML 的常见陷阱?

常见陷阱包括:1)布尔值陷阱:yes/no/on/off 会被解析为布尔值,需要加引号;2)数字陷阱:以 0 开头的数字可能被解析为八进制;3)冒号陷阱:值中包含冒号需要加引号;4)特殊字符:包含 #、:、- 等字符的字符串应加引号。

相关工具

相关术语

相关文章

YAML与JSON互转详解【2026】- 配置文件格式与转换原理

全面系统地掌握 YAML 与 JSON 两种主流数据格式的深层语法结构差异和双向互转原理,深入了解 YAML 作为 JSON 严格超集的高级特性(如锚点引用、多行字符串)。学习现代 DevOps 复杂配置文件管理的业界最佳实践,彻底掌握在 Kubernetes 集群、Docker Compose、CI/CD 流水线等高级工程场景下的格式选择规范与高效转换技巧。

2026-01-12

JSON vs XML终极对决【2026】- 数据格式选择全攻略

深入对比现代 Web 开发中两大主流数据交换格式:轻量级的 JSON 与结构严谨的 XML 的优劣差异。本高级指南从底层语法结构、反序列化解析性能、人类可读性、生态系统支持等维度进行全方位深度剖析。教您如何在现代 RESTful API 接口设计、微服务架构通信、复杂企业级 SOAP 应用对接等实际工程场景中制定最合理的数据格式选择与技术迁移重构策略!

2024-01-25

JSON在线对比指南:高效比较JSON文件的完整教程【2026】

全面系统地学习如何高效、准确地在线对比深层复杂嵌套的 JSON 数据文件。深入硬核掌握 JSON diff 差异比较的底层技术原理与算法(如 LCS、基于键匹配),学会使用业界最佳的在线 JSON 差异比较与可视化工具进行 Git 版本控制冲突解决和后端 REST API 联调调试。本高级指南详细解析了多种常见的差异对比应用场景、智能高亮冲突差异点,并为您提供实用的 Python 与 JavaScript 多语言代码实战示例以实现自动化的数据结构比对。

2026-02-07