JSON ↔ YAML 互轉
JSON ↔ YAML 互轉
將 JSON 與 YAML 並排編輯,修改任一側即時同步到另一側。支援縮排調整、鍵排序與多文件 YAML 拆分。適用於 Kubernetes/Helm/CI 設定編寫與 API 除錯。
🚀 快速開始
- 在左側 JSON 編輯器中貼上或輸入 JSON,右側 YAML 會自動同步
- 也可以在右側 YAML 編輯器中輸入 YAML,左側 JSON 同樣會自動同步
- 兩側完全對等-不需要選擇轉換方向,編輯哪一側,另一側就會自動更新
- 頂部工具列可隨時調整 JSON/YAML 縮排、是否排序鍵、是否啟用多文檔 YAML 拆分
- 在編輯器中按 Tab 鍵會插入製表符而非切換焦點,方便直接編輯縮排
- 每個編輯器右上角有「複製」和「清空」按鈕;清空任一側都會同時清空兩側
📌 常見使用情境
- Kubernetes 設定編寫:將 YAML 格式的 K8s 資源定義轉為 JSON 檢視結構,或反向操作
- Helm Values 偵錯:將 values.yaml 轉換為 JSON 以便在 IDE 中檢查類型和巢狀層級
- CI/CD 管線:在 GitHub Actions(YAML)和其他 CI 系統(JSON)之間快速轉換設定片段
- API 偵錯:將 JSON 格式的回應體轉為 YAML 以獲得更直覺的層級展示
- 設定遷移:在 YAML 和 JSON 格式的設定檔之間批次轉換
- 格式化 & 校驗:利用雙向同步快速檢驗 JSON 或 YAML 是否合法,錯誤定位到行列
🧭 使用建議
- JSON 縮排預設 2 空格,適合大多數場景;Helm Values 或深層巢狀建議使用 4 空格
- 開啟「排序鍵」後輸出鍵依字母序排列,方便比較兩份配置的差異
- 當 JSON 為陣列時,開啟「多重文檔 YAML」可將每個元素分割為一個獨立 YAML 文件(以 --- 分隔),常用於 K8s 多元資源文件
- 輸入有誤時對應編輯器下方會顯示錯誤提示和行列號,另一側內容不會被清空
- 對於較長的文本,建議先貼上到一側,等同步完成後再編輯,避免頻繁觸發轉換
⚠️ 限制與相容性
- YAML 解析遵循 YAML 1.2 規範;少數 YAML 1.1 特有語法(如 yes/no 自動布林轉換)可能不被識別
- JSON 數位精確度受 JavaScript IEEE 754 限制,超過 53 位元精度的大整數可能會遺失精度
- YAML 錨點(&/*/<<)在轉為 JSON 後會展開為完整內容,無法保留引用關係
- YAML 註解在轉換過程中會遺失,JSON 規範不支援註釋
🔒 隱私與安全
- 所有處理均在您的瀏覽器內完成,資料不會離開您的設備
❓ 常見問題
JSON 和 YAML 有什麼差別?什麼時候該用哪個?
JSON(JavaScript Object Notation)和 YAML(YAML Ain't Markup Language)都是常見的資料序列化格式,能表達相同的資料結構(物件、陣列、字串、數字等),但語法風格不同: • JSON 使用花括號 {}、方括號 [] 和雙引號,語法嚴格,所有鍵必須加雙引號,不支援註釋 • YAML 使用縮排表示層級,語法更簡潔易讀,支援註解(# 開頭),但對空格/縮排敏感 選型建議: • API 介面、程式間通訊、設定檔需要機器嚴格解析 → 用 JSON • Kubernetes/Helm/CI 設定、人工頻繁編輯的檔案 → 用 YAML • 兩者可相互轉換,資料層面完全等價
為什麼 YAML 中的 yes/no/on/off 轉成 JSON 後變成了 true/false?
這是 YAML 1.1 的遺留行為-yes、no、on、off、y、n 等被自動解釋為布林值。本工具使用 YAML 1.2 規範,只有 true/false 才會被視為布林值。如果你的 YAML 來自舊版解析器,可能已經遵循了 1.1 規則。解決方法:用引號包裹值(如 "yes")即可保留為字串
YAML 註解轉為 JSON 後為什麼消失了?
JSON 規範(RFC 8259)不支援註釋,這是設計者 Douglas Crockford 的有意決定-他認為註釋會被濫用於解析指令,影響互通性。因此 YAML→JSON 轉換必然會遺失註釋,反向轉換也無法還原。如需保留註釋,建議保存一份 YAML 原始文件
YAML 中的 --- 是什麼意思?
--- 是 YAML 的文件分隔符,用於在一個檔案中包含多個獨立的 YAML 文件。這在 Kubernetes 中非常常見-一個 YAML 檔案可以用 --- 分隔多個資源定義(如 Deployment + Service + ConfigMap)。本工具會將多個 YAML 文檔轉換為一個 JSON 數組,每個文檔對應數組中的一個元素;反向則可開啟「多文檔 YAML」選項將 JSON 數組拆分為 --- 分隔的多個文檔
轉換後數位精度遺失了怎麼辦?
JavaScript 使用 IEEE 754 雙精度浮點數,安全整數範圍為 -(2⁵³-1) 到 2⁵³-1(即 ±9007199254740991)。超出此範圍的整數在轉換時會失去精確度。常見場景:雪花 ID、64 位元時間戳記等。解決方法:將大整數用引號包裹為字串(如 "9007199254740992")以避免精確度損失
YAML 錨點(& 和 *)轉換後會怎麼樣?
YAML 錨點(&name)和引用(*name)是 YAML 獨有的複用機制,用來避免重複定義相同內容。轉為 JSON 後,所有引用會被展開為完整的內容副本,因為 JSON 沒有引用機制。這意味著轉換是有損的-反向轉換無法還原原始的錨點結構