YAML 和 JSON 都是常见的数据序列化格式,但设计目标和适用场景不同。相比 JSON,YAML 主要在可读性、表达能力和书写体验上更有优势。下面从几个维度对比说明 YAML 比 JSON“好在哪”(当然也有代价)。
JSON 示例:
{
"name": "Tom",
"age": 28,
"skills": ["Go", "Python"],
"address": {
"city": "Shanghai",
"zip": "200000"
}
}
YAML 示例:
name: Tom
age: 28
skills:
- Go
- Python
address:
city: Shanghai
zip: "200000"
✅ 没有大括号、引号、逗号
✅ 缩进即结构,更像自然语言
✅ 配置文件可读性明显更好
YAML:
# 数据库配置
host: localhost
port: 5432
JSON:完全不支持注释(这是很多配置场景的痛点)
✅ YAML 适合写配置文件
❌ JSON 常被迫用 _comment 字段或文档说明
YAML 支持:
多行字符串:
description: |
这是一段
多行文本
锚点复用:
defaults: &defaults
timeout: 30
retry: 3
service_a:
<<: *defaults
host: a.local
JSON 没有这些能力。
典型使用场景对比:
| 场景 | 更适合 |
|---|---|
| API 数据传输 | JSON |
| 配置文件(K8s / CI / Docker) | YAML |
| 日志 / 网络传输 | JSON |
| 人工编辑的文件 | YAML |
JSON 的标点成本:
{} [] "" ,
YAML:对人来说,YAML 更容易写对、改对。
YAML 并不是全面优于 JSON:
❌ 解析更复杂(容易出 bug)
❌ 缩进敏感(写错很难排查)
❌ 隐式类型转换有坑(如 yes → true)
❌ 不适合高频网络传输
YAML 比 JSON 更适合“人写、人读”的配置文件;JSON 比 YAML 更适合“机器生成、机器解析”的数据交换。
如果你愿意,我也可以给你一个 “什么时候该用 YAML,什么时候该用 JSON” 的速查表。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。