ZonoTools

如何逐步将 JSON 转换为 YAML

作者 ZonoTools7 分钟阅读

为什么要把 JSON 转成 YAML

JSON 和 YAML 都能表示结构化数据,但使用场景不同。JSON 严格,常见于 API;YAML 更适合人在 Git 中审查和维护配置,例如 CI pipeline、Kubernetes manifest 或部署文件。

当源数据来自 API、生成器或 export,而目标系统需要人类可读的 YAML 时,转换 JSON to YAML 很有意义。不要手工重写整棵结构,而是在边界处转换并验证。

方法 1:使用在线工具

最快的方法是打开 JSON to YAML,粘贴 JSON 并复制输出。ZonoTools 在浏览器中处理内容,适合包含内部 hostname 或 secret placeholder 的样例。

推荐流程:

1. 如果 JSON 来自日志或复制内容,先用 JSON Validator 验证。
2. 粘贴到 JSON to YAML
3. 复制 YAML 输出。
4. 用 YAML Validator 或目标系统 linter 检查。

方法 2:使用 Python

如果转换需要进入脚本、CI 或迁移任务,可以使用 Python 和 PyYAML:

sort_keys=False 可以保持 key 顺序,让 diff 更容易审查。default_flow_style=False 会输出更易读的块状 YAML。

python
import json import yaml with open("input.json", encoding="utf-8") as f: data = json.load(f) with open("output.yaml", "w", encoding="utf-8") as f: yaml.safe_dump( data, f, sort_keys=False, default_flow_style=False, allow_unicode=True, )

方法 3:使用 yq 和 jq

在终端中,yq 可以读取 JSON 并输出 YAML,jq 则适合先规范化 JSON:

CI 中要固定工具版本,因为不同 yq 实现的参数可能不同。

bash
# JSON -> YAML yq -p=json -o=yaml < input.json > output.yaml # 先规范化 JSON,再转换 jq . messy.json | yq -p=json -o=yaml > output.yaml

常见错误

缩进: YAML 依赖空格层级。不要使用 tab,通常使用两个空格。

类型: YAML 可能把 yes、日期或 null 解读成非字符串。需要保持文本时请加引号。

嵌套结构: 深层对象和数组看起来正确,但很难人工审查。提交前必须格式化并验证。

平台字段: Kubernetes 或 CI 中,语法转换不代表平台接受。还需要目标平台校验。

结论

快速转换用 JSON to YAML;自动化转换用 Python 或 yq。无论哪种方式,都先验证 JSON,再检查 YAML,并用最终消费它的工具确认结果。

footer=