將 YAML 轉為 JSON(並避免縮排錯誤)
自 YAML 1.2 起,任何 JSON 文件都是合法的 YAML。將 YAML 設定轉為 JSON,並留意縮排與型別推論的陷阱。
YAML 與 JSON 是相關的
YAML 1.2 是 JSON 的嚴格超集,所以任何 JSON 文件都已經是合法的 YAML。把 YAML 轉成 JSON,主要是把基於縮排的結構改寫成花括號與方括號。
縮排規則
YAML 不允許用 tab 做縮排 —— 請用空格,並讓同層的鍵維持相同深度。一個不小心的 tab 或對不齊的鍵,是最常見的 YAML 解析錯誤。
挪威問題
未加引號的 NO、yes、on、off 在某些解析器裡會被讀成布林值,結果國家代碼 NO 就變成了 false。把這些值加引號,強迫它們保持為字串。
安全地轉換
先驗證 YAML,再轉換。把有歧義的純量加引號,並確認數字、日期、開頭為零的值仍然是你期望的型別。
多文件 YAML 串流
一個 YAML 檔案可以用 '---' 分隔多個文件。JSON 沒有對應的概念 —— 各自轉換每個文件,如果下游工具需要一次拿到全部,再把它們包成一個 JSON 陣列。Kubernetes manifest 是最常見的情境。
Anchor 與 alias
YAML 的 & anchor 與 * alias 允許用參考來重複使用節點,但 JSON 沒有別名機制。安全的轉換器會把每個 alias 解析成被錨定值的一份複本,這會讓文件變大。要注意:再轉回 YAML 會失去原本的共享關係。
YAML 在轉換時會失去的資訊
註解、像 !!binary 這樣的標籤註記、自訂 tag、block 與 flow 風格的差異以及鍵序,在 YAML 轉 JSON 時都會被丟掉。對純粹的資料交換來說沒問題;但對之後還會手動再編輯的設定檔,建議把 YAML 視為真正的來源檔。
JSON 修復指南
主題中心
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
具體指南
- 如何解碼 Base64 字串(以及 JWT Payload)
- URL 編碼:對查詢參數與路徑做百分號編碼
- 將 JSON 轉為 CSV:把物件陣列扁平化
- 將 JSON 轉為 XML:根元素、屬性與陣列
- 將 JSON 跳脫為字串字面值(並解碼被雙重編碼的 JSON)
- 修復 JSON 中的尾隨逗號
- 修復 JSON 中的單引號
- 修復 JSON 中未加引號的鍵
- 修復 LLM 輸出的 JSON
- 修復 JSON 解析錯誤:Expected Property Name
- JSON 與 JavaScript 物件字面值的差異
- 在發送 API 請求前驗證 JSON
- JSON 格式化器 vs JSON 修復工具
- 修復 JSON Unexpected Token 錯誤
- JSON 轉 JavaScript 物件轉換工具