JSON 如何对应到 YAML
JSON 和 YAML 描述的是同一种数据模型:映射(即 JSON 对象)、序列(即 JSON 数组)和标量(字符串、数字、布尔值和 null)。YAML 1.2 的设计保证了每个 JSON 文档同时也是合法的 YAML 文档,因此转换不会丢失任何信息。转换器以块样式输出 YAML:每个键独占一行,用缩进表示嵌套,列表项以 - 开头。
| JSON | YAML |
|---|---|
{"name": "api", "port": 8080} | name: apiport: 8080 |
{"tags": ["a", "b"]} | tags: - a - b |
{"empty": {}, "none": []} | empty: {}none: [] |
{"v": null, "ok": true} | v: nullok: true |
{"code": "0755", "n": "123"} | code: "0755"n: "123" |
如何将 JSON 转为 YAML
- 粘贴 JSON,或打开一个
.json文件。工具会先进行校验,错误会连同行号一起列出,“修复 JSON”可以自动修正常见错误。 - 选择 2 或 4 个空格缩进,以及是否对键排序。
- 点击“转为 YAML”。复制结果,或下载为
data.yaml。
示例:一个包清单文件
{"name": "web", "version": "1.10", "scripts": {"build": "vite build"}, "private": true}
会转换为
name: web
version: "1.10"
scripts:
build: vite build
private: true
version 仍然带引号,因为不加引号的 1.10 在读回时会被解析成数字 1.1。
为什么要把 JSON 转为 YAML?
- 配置文件:Kubernetes、Docker Compose、GitHub Actions、GitLab CI、Ansible 和 OpenAPI 的文件通常用 YAML 编写,而各种工具和 API 往往输出 JSON。
- 可读性:没有花括号、引号更少,还能写注释,YAML 更便于审阅。
- 编辑:在 YAML 列表中新增一行无需改动上一行,因此对比差异更小。
反向转换请使用 YAML 转 JSON;转换后若要整理 YAML,请使用 YAML 格式化工具。