
什么是 YAML 以及为何要转换为 JSON?
YAML(YAML Ain't Markup Language)是一种人类友好的数据序列化格式,广泛用于配置文件。JSON(JavaScript Object Notation)是 Web API 和应用程序的通用数据交换格式。虽然两者都表示结构化数据,但它们各有优势,用于不同的场景。
将 YAML 转换为 JSON 是常见需求,当:
- 在 JavaScript/Node.js 应用程序中处理配置文件
- 向期望 JSON 的 REST API 发送数据
- 将基于 YAML 的工具与基于 JSON 的系统集成
- 转换 Kubernetes/Docker YAML 配置以供 API 使用
- 通过在 JSON 查看器中查看配置来进行调试

YAML 语法概述
YAML 使用缩进和特殊字符而不是花括号和方括号:
# 一个 YAML 配置示例
server:
host: localhost
port: 8080
ssl: true
database:
url: postgresql://localhost:5432/mydb
pool_size: 10
features:
- authentication
- caching
- logging
YAML 的关键特性:
- 缩进定义结构(2 或 4 个空格,从不使用制表符)
- 冒号分隔键和值
- 破折号表示列表项
- 井号开始注释
- 引号对于大多数字符串是可选的
YAML 数据类型
YAML 自动推断类型:
true/false→ 布尔型42→ 整数3.14→ 浮点数"hello"→ 字符串null或~→ 空值- 像
2024-01-15这样的日期 → 日期(在某些解析器中)
这种自动检测可能会导致意外——像 NO 这样的挪威市镇代码在某些 YAML 解析器中可能被解释为布尔值 false。
等效的 JSON
上面的 YAML 示例转换为:
{
"server": {
"host": "localhost",
"port": 8080,
"ssl": true
},
"database": {
"url": "postgresql://localhost:5432/mydb",
"pool_size": 10
},
"features": [
"authentication",
"caching",
"logging"
]
}

YAML 和 JSON 的主要区别
| 特性 | YAML | JSON |
|---|---|---|
| 注释 | 支持(#) |
不支持 |
| 可读性 | 高 | 中 |
| 冗长性 | 低 | 较高 |
| 多行字符串 | 自然 | 需要 \n 转义 |
| 尾随逗号 | 不适用 | 不允许 |
| 数据类型 | 丰富(日期等) | 有限(字符串、数字、布尔、空、数组、对象) |
| 解析复杂度 | 高 | 低 |
| 安全问题 | 较高(YAML 炸弹) | 较低 |
YAML 锚点和别名
YAML 支持 JSON 中没有的强大特性:
defaults: &defaults
timeout: 30
retries: 3
production:
<<: *defaults
host: prod.example.com
staging:
<<: *defaults
host: staging.example.com
转换为 JSON 时,锚点/别名会被解析——引用的值会被内联。
常见的 YAML 转 JSON 用例

Kubernetes 配置
Kubernetes 清单以 YAML 编写,但 API 服务器处理 JSON:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
CI/CD 管道文件
GitHub Actions、GitLab CI 和 CircleCI 使用 YAML,但许多工具将其输出处理为 JSON。
Docker Compose
Docker Compose 文件是 YAML 格式。检查 compose 配置的工具通常使用 JSON 表示。
使用 YAML 转 JSON 转换器
我们的转换器:
- 粘贴或输入 YAML 到输入面板
- 即时 JSON 输出——在您输入时实时转换
- 语法验证——在转换前高亮 YAML 错误
- 格式化输出——带有适当缩进的漂亮打印 JSON
- 复制 JSON——一键复制到剪贴板
- 下载——将转换后的 JSON 保存为文件
该工具处理所有 YAML 特性,包括锚点、多行字符串、复杂嵌套以及类型推断相关的边缘情况。