ZonoTools

如何將 JSON 轉換為 YAML(逐步指南)

By ZonoTools7 min read

為什麼要將 JSON 轉換為 YAML?

可讀性: YAML 去掉了大括號和大量引用,因此巢狀設定讀起來就像大綱一樣 — 更方便人們查看 Git 差異。

設定使用: CI 管道、Kubernetes 清單和應用程式設定通常以 YAML 形式編寫。當您的事實來源是 JSON(API 匯出、產生器輸出或固定裝置)時,您可以在邊界處轉換一次,而不是手動重寫。

如果您不確定哪種格式適合哪裡,請先瀏覽JSON vs YAML: differences and use cases— 本指南重點介紹 如何將 JSON 轉換為 yaml,而不是選擇宗教。

方法一:使用線上工具(最快)

ZonoTools 在瀏覽器中執行 JSON to YAML:貼上 JSON,複製 YAML。當有效負載包含您不希望上傳到其他地方的內部主機名稱或秘密佔位符時,處理保持在本機是合理的。

步驟: (1) 如果貼上來自日誌或 Slack,請先使用 JSON Validator 驗證 JSON。 (2) 貼到JSON to YAML。 (3) 複製 YAML 並可選擇在提交前檢查 YAML Validator

對於叢集綁定輸出,請將結果與Kubernetes JSON→YAML examples配對,以便在轉換後移除僅伺服器欄位。

方法二:使用Python

安裝 PyYAML (pip install pyyaml),然後以穩定的方式載入 JSON 並轉儲 YAML:

sort_keys=False保留 JSON 中的鍵順序;與內聯{}/[]blob 相比,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, )

方法三:使用CLI工具

yq 可以讀取 JSON 並發出 YAML(標誌因構建而略有不同 - Mike Farah 的 yq 被廣泛使用)。 jq 只發出 JSON;將 jq 與整齊的 JSON 配對,然後將 yq 與 YAML 配對:

在 CI 中固定工具版本,以便標記在筆記型電腦和跑步機上保持穩定。

bash
# JSON → YAML yq -p=JSON -o=yaml < input.JSON > output.yaml # Normalize messy JSON first, then convert jq . messy.JSON | yq -p=JSON -o=yaml > output.yaml

常見錯誤

縮排: YAML 巢狀對空格敏感 - 製表符與空格或一列漂移會重新連接樹。首選兩個空格,禁止.yamllint或 editorconfig 中的製表符,並從 JSON 重新轉換,而不是手動拖曳清單標記。

資料類型: YAML 可能會以與您的 JSON 消費者預期不同的方式解釋yes、裸日期或null變體 — 引號標量必須保留字串。完整的症狀清單和修復:Common JSON to YAML conversion errors

底線:當您想要零設定時,選擇 ZonoTools JSON to YAML;當轉換必須位於腳本或管道內時,請使用 Python 或 yq,然後每次都驗證輸出。