跳至內容

JSON 修復工具

修復多餘逗號、單引號、註解、JSONP 包裝等問題。

即時
輸入

這個工具的用途

JSON Repair 把「幾乎是 JSON」的輸入轉成有效 JSON,並明確告訴你它改了什麼。單引號、尾隨逗號、註解、JSONP wrapper、Python 的 True / False / None、JavaScript 風格未加引號的物件鍵、缺漏的逗號、BOM 以及其他寬鬆輸入,都會被標準化為嚴格的 RFC 8259 JSON。所有運算都在你的瀏覽器內完成——資料不會上傳。

使用步驟

貼上破損的 JSON(或載入範例),右側面板會填入修復後的文件。「What we fixed」面板列出每一次套用的轉換——每個修復都是保守的,永遠只改語法不改資料。點擊 Apply to input 把修復後的文字複製回輸入框以便儲存。

輸入(典型的混亂貼上):

{foo: 'bar', items: [1, 2,], ok: True, /* note */ ratio: .5}

輸出:

{
  "foo": "bar",
  "items": [1, 2],
  "ok": true,
  "ratio": 0.5
}

已套用的修復(依序):未引號鍵加引號單引號轉雙引號移除尾隨逗號替換 Python 字面值移除註解正規化開頭為小數點的數字

限制與邊界情況

  • Repair 為啟發式,並非完整的 JSON5 或 JSONC 解析器。它能處理上述常見情況;嚴重破損或被截斷的輸入可能無法復原。
  • 它只改語法,永遠不改值。數字仍是數字、字串仍是字串,文件結構也會保留。
  • 模糊的情況(例如 NaN / undefined / 未閉合的字串)會原樣保留。若殘餘輸出仍無法解析,「residual error」橫幅會指出解析器放棄的行/欄位置——你可以手動修補後,再以 Validator 確認。
  • 原始輸入會保留在左側編輯器中,直到你點擊 Apply to input。Repair 屬於非破壞性操作。
  • 延伸閱讀:常見 JSON 語法錯誤說明為何這些錯誤經常出現;在 JavaScript 中安全解析 JSON則涵蓋如何處理不信任的輸入。

常見問題

它能修好每一種破損的 JSON 嗎?
能處理常見情況:BOM、JSONP wrapper、// 與 /* */ 註解、單引號、尾隨逗號、跨行成員之間缺漏的逗號、JavaScript 風格未引號鍵、Python True/False/None,以及像 .5 這種開頭小數點數字。它「無法」復原被截斷的資料,或從根本上結構錯誤(例如大括號不配對)的輸入。
修復會改變我的資料嗎?
不會。Repair 只標準化語法,從不改動值。數字、字串、布林與 null 在來回間維持不變;物件與陣列的成員與順序皆保留。若你看到值層級的變更,那是 bug,請回報。
可以還原修復嗎?
可以——Repair 為非破壞性操作。原始文字會保留在左側輸入面板中;修復後的文字只有在你點擊「Apply to input」時才會跨欄複製。瀏覽器原生的編輯器復原歷史也仍可使用。
支援 JSON5 或 JSONC 嗎?
支援 JSON5 與 JSONC 的實用子集(註解、尾隨逗號、單引號、未引號鍵、開頭小數點數字),但並非完整實作。若需要無損地處理 JSON5 或 JSONC 文件,請改用專門的函式庫。
如果修復後輸出仍然不合法該怎麼辦?
Repair 面板會以橫幅顯示殘餘錯誤的行/欄位置。套用列出的修復、手動編輯輸入處理剩下的問題,再以 Validator 確認即可。
我的 JSON 會被傳送到伺服器嗎?
不會。每一個修復都在你的瀏覽器內執行,頁面不會上傳任何資料。