使用方式
- 選擇轉換方向:JSON → YAML 或 YAML → JSON。
- 貼上資料或按一下「試用範例」。輸入時,結果會即時更新。
- 選擇輸出內容使用 2 格或 4 格縮排。
- 複製或下載結果。按一下「將輸出設為輸入」即可切換方向,轉換回原格式。
運作方式
轉換使用開源 yaml 程式庫(第 2 版),並遵循 YAML 1.2 規格。實際使用上,YAML 1.2 是 JSON 的超集,因此任何 JSON 文件都能無損轉換為 YAML;只使用映射、清單、字串、數字、布林值和 null 的 YAML,也能轉回完全相同的 JSON。
產生 YAML 時,工具會將可能被讀者解讀為其他內容的字串加上引號。較舊的 YAML 1.1 剖析器(例如 PyYAML 和許多 CI 工具)會將 yes、no、on 和 off 讀為布林值,將 0777 讀為八進位數字,並將 2024-01-31 讀為日期,因此會輸出為 "yes"、"0777" 和 "2024-01-31"。長字串不會折疊成多行。由於 JSON 不支援註解,註解無法保留。
讀取 YAML 時,錨點(&name)和別名(*name)會展開,包括 << 合併鍵;以 --- 分隔的多份文件則會轉換為 JSON 陣列。為保障瀏覽器安全,別名展開設有上限,可避免「billion laughs」文件。沒有對應 JSON 類型的 YAML 值會盡可能貼近原意轉換:.inf 和 .nan 會變成 null,時間戳記則保留為字串。語法錯誤會指出行號和欄號。
範例
Kubernetes 資訊清單
以 JSON 撰寫的 Deployment 指令碼會轉換為 kubectl 使用者熟悉的 YAML 格式,並將 containers 下的清單項目寫成 - name: web。像 "no" 這樣的值會保留引號,確保仍是字串。
含錨點的 CI 設定
管線檔案定義 defaults: &defaults,並使用 <<: *defaults 重複套用。轉換為 JSON 後,就能清楚看到合併後各個工作項目實際包含哪些鍵。
OpenAPI 規格
OpenAPI 檔案以 YAML 維護,但程式碼產生器需要 JSON。貼上 YAML、選擇 2 格縮排,然後下載 .json 檔案。
常見問題
為什麼我的 YAML 中的 "yes" 會加上引號?
依照 YAML 1.1 規則(PyYAML、Ansible 和許多其他工具仍採用此規則),未加引號的 yes、no、on 或 off 會被視為布林值。加上引號後,所有剖析器都會將其視為字串。引號不屬於值的一部分。
轉換為 JSON 時會保留 YAML 註解嗎?
不會。JSON 沒有註解語法,因此註解會被移除。將 JSON 轉回 YAML 時,也不會還原註解。
多份 YAML 文件以 --- 分隔時會如何處理?
這些文件會依序轉換為一個 JSON 陣列,每份文件各占一個項目。只有一份文件時,則會直接轉換為其值。
CloudFormation 的 !Ref 等自訂標籤會如何處理?
工具無法辨識應用程式專用標籤。畫面會顯示警告,並將帶標籤的值轉換為一般值,因此 !Ref MyBucket 會變成字串 "MyBucket",標籤本身則會遺失。
隱私權
兩種轉換方向都完全在瀏覽器中執行。您的 JSON 或 YAML 不會上傳、儲存或納入分析資料。