JSON 格式化
免費 JSON 格式化工具:一鍵排版或壓縮,語法錯誤直接標出第幾行第幾欄,樹狀檢視可展開收合,大整數不失真。免註冊,資料只在瀏覽器處理不上傳。
- 錯誤標出行列
- 樹狀展開收合
- 大整數不失真
- 一鍵壓縮
輸入合法的 JSON 後,這裡會顯示可展開收合的樹狀結構。
資料只在你的瀏覽器中處理,不會上傳也不會儲存。
🔒 所有計算都在你的瀏覽器內完成,資料不會上傳到任何伺服器。
什麼時候會用到
- API 除錯:把 API 回傳的一整行 JSON 排版成易讀格式,用樹狀檢視找欄位。
- 修正設定檔:設定檔少了逗號或引號時,直接標出錯在第幾行第幾欄。
- 上線前壓縮:一鍵壓成一行,減少檔案大小或方便貼進程式。
- 比對前先整理:勾選「排序 key」讓兩份 JSON 的欄位順序一致,再用文字比對工具比較。
使用說明
- 把 JSON 貼到左邊的輸入框,或按「開啟檔案」讀取 .json 檔;輸入時會即時檢查語法,右邊同步顯示樹狀預覽。
- 選好縮排(2 空格、4 空格或 Tab),按「格式化」排版成易讀的多行格式,按「壓縮」變成一行;勾選「排序 key」會把所有物件的 key 依字母排序。
- 有語法錯誤時會顯示錯在第幾行第幾欄,按「定位錯誤」直接選取出錯的字元;完成後按「複製」帶走結果。
實際範例
物件最後多一個逗號:輸入四行的 {、"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 物件的寫法則寬鬆許多。
參考來源
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format — IETF
- ECMA-404: The JSON data interchange syntax — Ecma International
- Number.MAX_SAFE_INTEGER — MDN Web Docs