配置文件里 JSON 和 YAML 怎么选

比较 JSON 和 YAML 在开发配置、CI 文件、Kubernetes 清单、API 示例和机器生成数据中的取舍。

JSON 和 YAML 经常表达同一种数据模型:对象、数组、字符串、数字、布尔值和 null。区别在于它们面对人工编辑和机器生成流程时的表现。

选择格式时,先看谁会编辑它,以及流水线需要多严格。

JSON 严格且可预测

JSON 适合机器生产或消费的文件:

  • API 请求和响应示例。
  • package 元数据。
  • 生成型配置。
  • 服务之间的数据交换。
  • 需要跨环境稳定解析的测试 fixture。

严格语法有时显得啰嗦,但能减少歧义。字符串需要引号,逗号不能乱放,解析器行为通常一致。

需要快速校验、检查或规范化 JSON 时,可以用 JSON 格式化工具

YAML 更适合人工维护配置

YAML 常用于人维护的文件:

  • Kubernetes manifest。
  • GitHub Actions workflow。
  • Docker Compose 文件。
  • 应用配置。
  • 文档示例。

当嵌套较深、需要注释时,YAML 更容易阅读。代价是缩进、隐式类型和多文档文件会带来意外。

重要 YAML 在 apply 或 commit 前,可以先用 YAML 格式化 / 校验工具 检查。

YAML 容易错在哪里

常见 YAML 问题包括:

  • 使用 Tab,而解析器期待空格。
  • onyesno 被意外解释。
  • 两个文档被粘到一个文件里。
  • 缩进看起来对,但实际结构变了。
  • 自动转换时注释丢失。

这些问题可以管理,但确实会带来运维风险。

JSON 容易错在哪里

常见 JSON 问题包括:

  • 从 JavaScript 复制出尾随逗号。
  • 在严格 JSON 文件里加入注释。
  • 字符串转义后难以阅读。
  • 大文件不适合人工编辑。

JSON 对机器更安全,但不一定对人更友好。

实用规则

严格数据交换优先 JSON。需要人类阅读和注释的配置优先 YAML。转换时要谨慎,部署前要校验,不要假设两种格式双向转换能保留所有细节。

相关工具

使用本文提到的工具

JSON 格式化工具json / formatter / validatorYAML 格式化 / 校验yaml / formatter / validator

继续学习相关格式

JSON 课程系统学习 JSON:语法、类型、解析与生成、实际结构模式及在现代技术栈中的位置。YAML 课程系统学习 YAML 配置与 DevOps:语法、与 JSON 的区别、Kubernetes/CI 场景与调试方法。

返回文章列表