JSON vs YAML 对比:语法差异 + 实战场景选择
Kubernetes 配置文件是 YAML、Docker Compose 也是 YAML、API 接口返回 JSON、前端配置文件也常常是 JSON。两种格式长得像、用得广,到底啥区别?
RFC 8259 — JSON 规范YAML 1.2 规范
RFC 8259 — JSON 规范
📌 本文关键结论(TL;DR)
- JSON vs YAML 对比:语法差异 + 实战场景选择 是开发者常用的解决方案之一
- 本文基于 RFC 标准和实战经验编写
- 提供免费在线工具,浏览器本地处理,数据不上传
- 文末有 FAQ 区块解答常见疑问,可直接复制使用
📌 本文关键结论(TL;DR)
- JSON vs YAML 对比:语法差异 + 实战场景选择 是开发者常用的解决方案之一
- 本文基于 RFC 标准和实战经验编写
- 提供免费在线工具,浏览器本地处理,数据不上传
- 文末有 FAQ 区块解答常见疑问,可直接复制使用
本文对比 JSON 和 YAML 的语法差异、各自优劣、典型场景,并教你用 DevToolbox JSON ↔ YAML 在线互转工具 一键转换。
一、一眼看懂的对比
同一个用户配置,两种写法:
JSON 写法
{
"name": "Alice",
"age": 28,
"skills": ["Python", "Docker", "K8s"],
"address": {
"city": "Beijing",
"zip": "100000"
},
"isActive": true
}
YAML 写法
name: Alice
age: 28
skills:
- Python
- Docker
- K8s
address:
city: Beijing
zip: "100000" # 注意:纯数字字符串需加引号
isActive: true
YAML 没有大括号、没有引号、没有逗号——靠缩进表示层级。这就是它"对人友好"的核心原因。
二、5 大核心差异
| 特性 | JSON | YAML |
|---|---|---|
| 语法 | { } + 引号 + 逗号 | 缩进 + 冒号 + 横线 |
| 注释 | ❌ 不支持 | ✅ # 注释 |
| 数据类型 | 6 种基本类型 | JSON 全部 + 日期/二进制/锚点 |
| 可读性 | 机器友好 | 人友好 |
| 解析速度 | 快(标准库支持) | 慢 2-3 倍 |
三、JSON 不支持但 YAML 支持的 4 个特性
1. 注释
# 这是数据库配置
database:
host: localhost
port: 5432
2. 多行字符串
description: |
这是第一行
这是第二行
保留换行
3. 锚点引用(DRY)
defaults: &defaults
timeout: 30
retries: 3
prod:
<<: *defaults
host: prod.example.com
4. 显式类型标记
version: !!str 1.0 # 强制当字符串
port: !!int "8080" # 强制当整数
四、场景选择指南
用 JSON:
- API 数据传输(REST API 默认)
- 前后端通信
- 日志 / 监控数据
- 需要高性能解析的大数据场景
用 YAML:
- 配置文件(Docker Compose、K8s、GitHub Actions)
- CI/CD 流水线定义
- 需要写注释的配置文件
- 人工编辑频率高的场景
五、YAML 5 个新手常踩的坑
坑 1:缩进必须用空格,不能用 Tab。编辑器把 Tab 转成空格再保存。
坑 2:冒号后必须有空格。name:Alice 会报错或变成字符串 "Alice" 拼到 key 上。
坑 3:纯数字字符串要加引号。zip: 100000 是整数;zip: "100000" 才是字符串。否则前端 JSON.stringify 变成 100000 丢前导 0。
坑 4:布尔值大小写敏感。YAML 里 true/false/yes/no 都是布尔,不是字符串。
坑 5:特殊字符。值含 : # { } [ ] , & * ! | > ' " % @ ` 时,整行加引号(最好用单引号)。
六、实战互转
配置文件经常要"JSON 转 YAML 给运维看"或"YAML 转 JSON 给前端用"。推荐 DevToolbox JSON ↔ YAML 在线互转:
- 双向实时转换
- 语法错误高亮提示
- 一键复制结果
- 纯前端运行,数据不上传
七、结语
JSON 是机器的语言、YAML 是人类的语言。配置文件用 YAML、API 用 JSON——记住这条主轴就够了。两者完全可以互转,遇到语法错误记得检查缩进 + 引号 + 数据类型三个点。
相关工具:JSON ↔ YAML 互转 · JSON 格式化 · YAML 校验
八、常见问题 FAQ
Q: YAML 比 JSON 慢吗?
YAML 解析比 JSON 慢 2-5 倍(缩进规则和锚点语法复杂)。配置文件用 YAML(人友好),API 通信用 JSON(机器友好)。