JSON vs YAML:区别、使用场景和如何选择
作者 ZonoTools10 分钟阅读

区别是什么
讨论 JSON vs YAML 时,不是判断哪个格式绝对更好。两者都能表示嵌套数据、对象和列表。区别在于主要读者:JSON 更适合机器、API 和严格 parser;YAML 更适合人类编辑配置和审查 diff。
一句话:JSON 严格且通用,适合数据交换;YAML 更易读,适合人维护配置。
什么是 JSON
JSON 是 JavaScript Object Notation。它使用 {}、[]、带引号的 key 和逗号。缩进帮助阅读,但解析后不改变含义。
这种严格性是优点。几乎所有主流语言都有成熟快速的 JSON parser。JSON 无效时通常会明确失败。
json
{ "service": "api", "port": 443, "regions": ["us-east", "eu-west"]}什么是 YAML
YAML 优先考虑人类可读性。它用缩进表达嵌套,用 - 表示列表,很多简单值不需要引号。因此它常出现在 Kubernetes、Docker Compose、GitHub Actions、Helm values 和配置文件中。
代价是:缩进就是语法。一个空格放错,key 可能进入另一个块。某些值如果不加引号,也可能被解析成意外类型。
快速比较
text
Aspect JSON YAML
-----------------------------------------------------------------
Readability 更紧凑,括号和引号更多 更适合在 Git 中审查
Parsing 严格且通用 更灵活,边界情况更多
Comments 不支持原生注释 支持 # 注释
Typical use API 和生成 payload 手写 config 和 manifest
Common risk 逗号或引号错误 缩进和隐式类型什么时候用 JSON
选择 JSON 的场景:
- 发布或消费
application/jsonAPI。 - 浏览器、移动应用或微服务读取数据。
- 内容由代码、数据库、日志或遥测生成。
- 需要简单 parser 和明确错误。
如果文件从 JSON 开始,只是因为仓库规范才需要 YAML,用 JSON to YAML 转换,不要手工重写。
什么时候用 YAML
选择 YAML 的场景:
- 人类在 Git 中审查和编辑配置。
- 需要在 key 附近写注释解释意图。
- 技术栈已经使用 YAML 管理 CI、Kubernetes、Docker Compose 或 DevOps 工具。
- diff 可读性比紧凑性更重要。
YAML 语法有效不代表目标平台接受。部署前仍要用目标系统校验。
结论
JSON vs YAML 是上下文选择。API、机器和严格解析优先时用 JSON;配置、人类维护和 Git 审查优先时用 YAML。需要两者时,在边界处有控制地转换,并验证结果。