如何逐步将 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。
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 实现的参数可能不同。
# 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,并用最终消费它的工具确认结果。