全部工具 / 对比指南 / JSON 和 YAML 有什么区别

JSON 和 YAML 有什么区别

一句话结论

机器之间传数据用 JSON,人写配置文件用 YAML。JSON 是几乎所有编程语言和接口的标准格式,解析快、生态全;YAML 靠缩进表达层级,可读性和手写体验更好,但缩进错位就会解析失败。两者可以无损互转。

核心区别对照

语法核心JSONYAML
可读性一般,括号密集好,接近自然语言
是否支持注释不支持支持 # 注释
解析速度快,原生 JSON.parse较慢,需额外库
语言/工具支持全平台原生需 yaml 库,多数语言要装包
出错风险低,结构显式高,缩进与制表符敏感
典型用途接口传输、日志、存储K8s / CI / Docker Compose 配置

JSON

JSON 源自 JavaScript 对象字面量,现在是事实上的数据交换标准。它的结构完全由括号和逗号显式定义,不依赖缩进,因此机器生成和解析都极其稳定,浏览器原生支持 JSON.parse。代价是冗长、不支持注释,手写得小心翼翼地处理末尾逗号。

YAML

YAML 用缩进和短横线表达层级,去掉了绝大部分括号,读写体验明显更好,并支持注释——这也是 Kubernetes、GitHub Actions、Docker Compose 都选它的原因。代价是缩进敏感:一个空格错位或误用 Tab 就会解析失败,且大多语言需要额外依赖。

怎么选

相关工具

常见问题

YAML 是 JSON 的超集吗

语法上基本是:合法的 JSON 通常能被 YAML 解析器读进去。但反过来不成立,YAML 的锚点、注释、多行字符串在 JSON 里没有对应物。

配置文件到底该用哪个

看谁在改。机器生成、程序读写用 JSON;人天天手改、要加注释说明用 YAML。

两者能互相转换吗

能,而且是近似无损的(YAML 的锚点和注释转成 JSON 后会丢失,其余结构可完整映射)。