使用方式
- 將 JSON 貼到輸入框,或按下「試用範例」。
- 選擇縮排方式(2 個空格、4 個空格或 Tab),也可以選擇是否依字母順序排序鍵。
- 在右側查看格式化結果。按下「最小化」即可移除所有空白字元。
- 如果 JSON 有語法錯誤,請依照顯示的行與欄修正,再將結果複製或下載為 .json 檔案。
運作方式
格式化工具會使用瀏覽器內建的 JSON 剖析器解析文字,再依您選擇的縮排方式重新輸出,因此結果一定是有效且縮排一致的 JSON。最小化會以不含空格或換行的形式輸出相同資料,這是透過網路傳送或存入設定值時最精簡的格式。
如果輸入的 JSON 無效,嚴格的檢查器會找出第一個錯誤,並標示所在的行與欄,同時以淺顯的說明指出常見錯誤:尾隨逗號、單引號、未加引號的鍵、註解,以及 NaN 或 undefined 等 JavaScript 有但 JSON 沒有的值。各瀏覽器呈現 JSON 錯誤的方式不同,因此錯誤位置由工具計算,而非取自瀏覽器訊息。
請留意重新格式化的限制。數字會以雙精度浮點數儲存,因此大於 9,007,199,254,740,991 (2^53 − 1) 的整數(例如某些資料庫 ID)會失去精確度:9007199254740993 會變成 9007199254740992。請將這類 ID 保留為字串。如果物件中有重複的鍵,只會保留最後一個值。看起來像整數的鍵("1"、"20")在 JavaScript 中一定會排在其他鍵之前,無論您是否排序。幾 MB 以內的輸入都能正常處理;超過約 300,000 個字元時,工具會暫停即時格式化,改為由您按下「格式化」,讓輸入保持順暢。
範例
閱讀 API 回應
REST API 回應內容可能全擠在一行,例如 {"user":{"id":7,"tags":["a","b"]}}。使用 2 個空格縮排後,每個鍵會各自佔一行,tags 陣列也會縮排呈現,讓您一眼看出資料結構。
比較兩個設定檔
兩個 JSON 設定檔列出相同的設定,但順序不同。將兩者都開啟「依 A–Z 排序鍵」後,輸出內容就會排列一致,文字差異比對也只會顯示真正的差異。
找出多餘的逗號
手動編輯的 package.json 無法載入。貼上內容後,工具會在第 14 行第 5 欄標示「尾隨逗號」,指出最後一個相依套件後面的逗號。
常見問題
為什麼格式化後的大數字變了?
瀏覽器中的 JSON 剖析器會以 64 位元浮點數儲存數字,只有不超過 9,007,199,254,740,991 的整數才能精確表示。更大的整數會四捨五入至最接近的可表示值。如果資料含有 64 位元 ID,請以字串傳送。
可以格式化含有註解或尾隨逗號的 JSON (JSON5、JSONC) 嗎?
不行。此工具嚴格遵循 JSON 標準 (RFC 8259),會標示註解和尾隨逗號及其位置,讓您移除這些內容。大多數程式語言中的 JSON 剖析器也會如此處理。
排序鍵會改變我的資料嗎?
不會改變任何值,只會調整物件內各鍵的順序。JSON 物件的定義並不規定順序,因此排序後的結果仍等效。陣列順序具有意義,因此不會重新排序。
可以格式化多大的檔案?
目前的桌面瀏覽器可處理數 MB 的檔案。輸入超過約 300,000 個字元時,工具會等您按下「格式化」或「最小化」後才處理,不會每輸入一個字就重新格式化。輸出非常大時,手機上的文字方塊可能會變得難以捲動。
我的 JSON 會上傳到任何地方嗎?
不會。剖析與格式化都會在您的瀏覽器中使用 JavaScript 執行,文字不會傳送至伺服器或儲存。
隱私權
您的 JSON 只會在瀏覽器中剖析與格式化,不會上傳、記錄或儲存,也不會納入分析資料。