JSON 格式化

免費 JSON 格式化工具:一鍵排版或壓縮,語法錯誤直接標出第幾行第幾欄,樹狀檢視可展開收合,大整數不失真。免註冊,資料只在瀏覽器處理不上傳。

  • 錯誤標出行列
  • 樹狀展開收合
  • 大整數不失真
  • 一鍵壓縮
樹狀預覽

輸入合法的 JSON 後,這裡會顯示可展開收合的樹狀結構。

資料只在你的瀏覽器中處理,不會上傳也不會儲存。

🔒 所有計算都在你的瀏覽器內完成,資料不會上傳到任何伺服器。

什麼時候會用到

  • API 除錯:把 API 回傳的一整行 JSON 排版成易讀格式,用樹狀檢視找欄位。
  • 修正設定檔:設定檔少了逗號或引號時,直接標出錯在第幾行第幾欄。
  • 上線前壓縮:一鍵壓成一行,減少檔案大小或方便貼進程式。
  • 比對前先整理:勾選「排序 key」讓兩份 JSON 的欄位順序一致,再用文字比對工具比較。

使用說明

  1. 把 JSON 貼到左邊的輸入框,或按「開啟檔案」讀取 .json 檔;輸入時會即時檢查語法,右邊同步顯示樹狀預覽。
  2. 選好縮排(2 空格、4 空格或 Tab),按「格式化」排版成易讀的多行格式,按「壓縮」變成一行;勾選「排序 key」會把所有物件的 key 依字母排序。
  3. 有語法錯誤時會顯示錯在第幾行第幾欄,按「定位錯誤」直接選取出錯的字元;完成後按「複製」帶走結果。

實際範例

物件最後多一個逗號:輸入四行的 {、"name": "Pockez",、"tags": ["json", "tool"],、},會顯示「第 4 行第 1 欄:最後一個項目後面多了逗號」。錯誤指在讀到 } 的位置,要刪掉的是第 3 行結尾的逗號。

大整數不失真:輸入 {"orderId":9007199254740993,"price":1.50},用 JavaScript 的 JSON.parse 讀取會得到 9007199254740992、價格變成 1.5;本工具格式化後仍是 9007199254740993 與 1.50,並提示「含 1 個超過安全範圍的大整數」。

排序 key:輸入 {"name":"Alice","age":30,"tags":["a","b"]},勾選「排序 key」、縮排 2 空格後格式化,key 順序變成 age、name、tags,而 tags 陣列裡的 a、b 順序不變。

結果怎麼看

  • 顯示「合法的 JSON」代表整份資料符合 JSON 標準(RFC 8259),任何程式語言都能正確讀取。
  • 錯誤訊息的行與欄是解析器第一個讀不懂的位置,真正要改的地方常在它前面一點,例如漏了逗號時會指在下一個 key 的開頭。
  • 樹狀預覽中 { 3 } 表示這個物件有 3 個欄位,[ 2 ] 表示陣列有 2 個元素;加了虛線底線的數字是大整數,滑鼠移上去會有說明。
  • 出現大整數提示時資料本身沒有錯,但接收端若用 JavaScript 等雙精度浮點數讀取會失真,建議改用字串傳遞或請對方用 BigInt 處理。

原理與計算方法

  • 使用自寫的解析器依 RFC 8259 與 ECMA-404 的文法逐字讀取,遇到第一個錯誤就停下並回報位置,不依賴瀏覽器內建的 JSON.parse,因此各瀏覽器顯示的錯誤位置與說明一致。
  • 格式化與壓縮只重新排列空白與換行,字串保留原本的跳脫寫法(\u00e9 仍是 \u00e9),數字保留原本的寫法(1.50、1e400 不會被改),物件 key 的原始順序與重複的 key 也都保留。
  • 排序 key 時以 UTF-16 碼位順序(與 JavaScript 預設排序相同)遞迴排序所有物件,相同的 key 維持原相對順序,陣列元素順序不動。
  • 絕對值超過 2^53−1(9007199254740991)的整數會被標記為大整數,帶小數點或科學記號的數字不在此列。

適用限制

  • 只接受標準 JSON:註解、結尾逗號、單引號、NaN、undefined 等 JSON5 或 JavaScript 的寫法都會被判為錯誤。
  • 一次只回報第一個錯誤,修正後會自動繼續檢查下一個。
  • 巢狀超過 1000 層會停止解析並提示,避免瀏覽器當掉。
  • 數十 MB 的大檔案可能讓瀏覽器變慢;樹狀預覽只預先展開前兩層,「全部展開」會建立所有節點,大檔建議只展開需要的部分。

常見問題

為什麼我的 JSON 被判定錯誤?

最常見的原因是:最後一個項目後面多了逗號、用單引號而不是雙引號、key 沒加引號、裡面有 // 註解,或寫了 undefined、NaN。這些在 JavaScript 可以用,但標準 JSON 不允許。錯誤訊息會指出位置與原因。

數字太大會不會被改掉?

不會。很多線上工具用 JavaScript 的 JSON.parse 處理,超過 9007199254740991 的整數(例如訂單編號 9007199254740993)會被改成相近的數字。本工具照原始寫法保留,並提示資料裡有幾個這種大整數。

格式化會改變我的資料嗎?

不會。格式化與壓縮只調整空白和換行,字串、數字寫法(例如 1.50)、key 的順序都維持原樣。只有勾選「排序 key」時才會調整物件裡 key 的順序,陣列順序永遠不動。

我的資料會被上傳嗎?

不會。解析、格式化與樹狀預覽都在你的瀏覽器裡完成,資料不會傳到伺服器,也不會被儲存,可以放心處理含個資或金鑰的設定檔。

JSON 可以寫註解嗎?

標準 JSON 不支援 // 或 /* */ 註解,會被判定為錯誤。需要註解的設定檔通常改用 JSONC、JSON5 或 YAML 等格式。

怎麼把 JSON 轉成 Excel 或 CSV?

用本站的「CSV 轉 JSON」工具,選「JSON → CSV」貼上資料,下載的 CSV 用 Excel 開啟即可(保留「加 BOM」,中文才不會亂碼)。

JSON 和 JavaScript 物件有什麼不同?

JSON 是純文字的資料格式:key 一定要用雙引號、不能有結尾逗號、不能放函式或 undefined;JavaScript 物件的寫法則寬鬆許多。

參考來源