JSON 格式化
格式化、校驗、壓縮、鍵排序 —— 100% 瀏覽器本地處理
值得瞭解的技術細節
JSON 由 RFC 8259 定義,規範裡有三個角落最容易踩雷:
- 數字是 IEEE-754 雙精度浮點——超過 2⁵³ 的整數(如 9007199254740993)在任何基於 JavaScript 的解析器裡都會默默丟失精度,這就是 API 的長 ID 常以字串出現的原因。
- 重複鍵沒有被規範禁止;解析器普遍保留最後一個,本工具行為相同。
- 驗證會回報第一個語法錯誤的精確行列號後停止——修好再跑,還有錯就會繼續報。
什麼是 JSON 格式化工具?
JSON 格式化器把 raw JSON——常是從 API 回應、設定檔或日誌流複製來的一整行——重排成人可掃描的縮排結構。本工具支援可選縮排格式化、壓回緊湊單行、只校驗不動文字、可選遞迴排序物件鍵,並每次報告位元組大小、總鍵數和巢狀深度。因為解析、列印和統計全在瀏覽器內執行,生產負載和帶秘密的設定可以放心貼上,不會送往伺服器。
從單行 API 湯到可讀結構
- 2 格、4 格或 Tab 縮排美化,或壓到最緊的合法單行
- 只校驗模式:檢查語法,文字一字不動
- 遞迴鍵排序:列印前把每層巢狀物件按字母排序
- 錯誤報告帶解析器訊息和失敗的確切列號
- 執行後統計位元組大小、鍵總數和最大深度,支援複製和 JSON 檔案下載
它回本的除錯時刻
- 對照欄位寫客戶端程式碼前,先讀懂巢狀 API 回應
- 整理臃腫設定檔,再把負載壓小以塞進限大小請求
- 稽核日誌裡摳出的結構,幾百行裡藏一個缺逗號
大負載和重複鍵驚喜
解析遵循嚴格 JSON,尾逗號、註解和單引號字串會被拒絕。重複物件鍵按 JSON 標準保留最後一個值,這會讓期待報錯的人意外;很深或很大的文件統計要走訪整棵樹,可能需要一點時間。空框直接拒絕,因為無物可驗。
隱私:貼上的任何東西都不離開瀏覽器分頁;格式化和校驗嚴格本機,敏感負載留在你放它的地方。
最後更新 · 2026-09-01
📚 常見 JSON 錯誤與修復對照表
幾乎所有 JSON 解析失敗都逃不出下面八種。對照表格,沿著格式化器高亮的行修復即可。
| 報錯 | 原因 | 修復 |
|---|---|---|
| Unexpected token < | 拿到的是 HTML 不是 JSON | 檢查介面位址;你在解析一個錯誤頁 |
| Unexpected end of input | 缺右括號/中括號 | 順著格式化器的縮排參考線找未閉合的塊 |
| Unexpected string | 元素之間缺逗號 | 在驗證器提示的位置補逗號 |
| Unexpected token ' | 用了單引號 | JSON 必須雙引號——全部替換 |
| Unexpected token , | } 或 ] 前有尾逗號 | 刪掉最後一個逗號 |
| Unexpected number | 前導零(007)或十六進位(0x1F) | 改成字串或去掉前綴 |
| 重複鍵 | 同一個鍵出現兩次——後者靜默覆蓋 | 重新命名其一;重複鍵合法但危險 |
| 看不見的垃圾字元 | BOM 或複製貼上帶入的空白 | 從純文字來源重新貼上 |
再補兩個冷知識:JSON 沒有註解語法(JSONC 擴充加了——VS Code 設定用的就是它);數字不能有前導零和十六進位形式。本頁全部在瀏覽器本地執行——不確定 JSON 是不是正確格式?讀格式對比。
最後更新 · 2026-09-01
為什麼用它而不是編輯器外掛
格式化、排序與統計
將原始 JSON 以兩空格、四空格或 Tab 縮排美化,可開啟深層鍵排序,每次處理後狀態列直接顯示位元組數、鍵數量與巢狀深度。
錯誤精確到行列位置
驗證會報告第一個語法錯誤所在的行與欄,巢狀物件深處漏掉的逗號也會直接指出修復位置,而不是只給一個籠統的解析失敗提示。
壓縮、複製或下載
壓縮模式把同一份文件摺疊成單行便於傳輸,隨後可一鍵複製,或另存為 formatted.json 檔案。
常見問題
我的 JSON 會被上傳到伺服器嗎?⌄
不會。格式化、校驗和壓縮全部由瀏覽器內的 JavaScript 完成,資料從不離開你的裝置,處理 API 金鑰、客戶資料等敏感內容也安全。
怎麼快速定位 JSON 語法錯誤?⌄
點擊「校驗」或「格式化」,如果 JSON 不合法,會顯示解析器錯誤訊息以及第一處錯誤的精確行列位置。最常見的錯誤是多餘的逗號、單引號和沒加引號的鍵名。
「鍵排序」有什麼用?⌄
它會遞迴地把每個物件的鍵按字母序排列後輸出。排序後的 JSON 在程式碼審查中更容易比對差異,也能為快取和雜湊產生穩定輸出。
為什麼一長串 ID 格式化之後末幾位變了?⌄
變的不是「格式化」那一步——而是文字被解析成 JavaScript 數字的那一刻。超過 2⁵³ ≈ 9×10¹⁵ 的整數超出雙精度尾數範圍,末位會被捨入。請在 JSON 裡把這類值加引號以字串保存。