JSON 轉 YAML
在瀏覽器內將 JSON 轉換為 YAML 的免費工具。無需上傳和註冊,保持鍵順序並附帶行號顯示語法錯誤。也可用於 Kubernetes / OpenAPI / Docker Compose 的設定檔案撰寫。
JSON to YAML 轉換工具
主要用途
想把以 JSON 撰寫的設定或 API 回應(如 Kubernetes 清單、Docker Compose、GitHub Actions 工作流、Ansible playbook、Helm 的 values.yaml 等)遷移到 YAML 形式的設定檔案時,可以使用本工具。想把從 API 回傳的 JSON 直接作為 config 使用時,只需貼上即可轉換為易讀的 YAML。
轉換範例
輸入範例:貼上 { "name": "formatarc", "features": ["json", "yaml"] } 後,輸出會整理為 name: formatarc / features: ["json", "yaml"] 這樣基於縮排的 YAML。不再需要引號,陣列和巢狀結構也能以自然的縮排表示。
JSON 與 YAML 的主要差異
YAML 用縮排表示層級,因此不需要花括號,字串也基本不需要引號。YAML 可以寫註解(# 行),但 JSON 按規格不能寫,因此如果 JSON 輸入包含註解,會在轉換階段被排除。本工具保持鍵順序與輸入一致地輸出為 YAML。
| 比較項目 | JSON | YAML |
|---|---|---|
| 結構 | 花括號·方括號 | 縮排 |
| 字串 | 總是帶引號 | 引號基本不需要 |
| 註解 | 不可 | 可用 # 書寫 |
| 鍵順序 | 本工具中保持 | 本工具中保持 |
| 主要用途 | API·資料交換 | 設定檔案·CI/CD |
將 OpenAPI / Swagger 規格的 JSON 轉換為 YAML
OpenAPI 3.0 / 3.1 或 Swagger 2.0 規格常以 JSON 撰寫或輸出,但編輯器、Lint 工具、CI 更偏好 YAML。直接貼上 JSON 規格即可在不破壞 $ref 參考、路徑鍵、元件順序的情況下轉換為 YAML。本工具不會將鍵重新按字母順序排序,因此規格結構不會損壞。可避免一般格式化工具導致的 schema 損毀,可直接用於 Redoc、Swagger UI、Spectral 的 Lint。
轉換流程
首先作為 JSON 正確解析,然後將該物件重新輸出為 YAML。如果輸入損毀,會在 JSON 階段回傳錯誤並顯示大致行號。不會傳送到伺服器,所有處理在瀏覽器內完成。詳細的轉換步驟和陷阱在另一篇「JSON YAML 轉換」指南中說明。
本工具保持與無法保持的內容
鍵順序、巢狀結構、值的型別(字串·數字·布林值·null)會原樣保持。由於 JSON 沒有註解,YAML 輸出也不包含註解。輸出風格以重視可讀性的區塊形式為基本。
CLI 單行命令: yq / Python / Node.js
適合偏好終端或想整合到 CI/CD 流水線的情況。以下單行命令同樣可以得到保持鍵順序的相同區塊形式 YAML。包含多文件、區塊標量等邊緣案例的詳細步驟在 JSON YAML 轉換指南中說明。
yq -P -o=yaml '.' input.json > output.yamlpython -c "import json,sys,yaml; yaml.safe_dump(json.load(sys.stdin), sys.stdout, sort_keys=False)" < input.jsonnode -e "const y=require('js-yaml'),f=require('fs'); console.log(y.dump(JSON.parse(f.readFileSync(0,'utf8'))))" < input.json