語言:繁體中文

tools / json

json/

JSON 格式化、壓縮、驗證、跳脫與鍵排序,輸入即時驗證。

輸入

結果

常見問題

JSON 驗證提示 Unexpected token 或「JSON 無效」怎麼辦

多半是寫成了 JavaScript 或 Python 的字面值,而不是標準 JSON。常見的有:單引號、鍵沒加雙引號、最後一項後面多了逗號、帶有 // 或 /* */ 註解、NaN 或 undefined(Python 的 True、None 同理)、從通訊軟體複製來的中文引號。錯誤位置是解析器卡住的地方,真正的原因可能就在它前面一點。

錯誤訊息裡的第幾行第幾欄怎麼看,為什麼後面是英文

行和欄都從 1 開始。位置優先取自瀏覽器的錯誤訊息;瀏覽器沒給位置時(例如 Safari),工具會自己掃描,找出第一個出錯的字元。「·」後面的英文是瀏覽器 JSON.parse 的原話,各瀏覽器說法不同,這裡沒有翻譯。

JSON 裡的 \u4e2d\u6587 怎麼轉成中文

直接點「格式化」或「壓縮」就可以了。工具先用 JSON.parse 讀入再輸出,字串裡的 \uXXXX 會還原成真正的字元。如果整段都是跳脫字串(外面有引號,裡面滿是 \"),請先選「取消跳脫」。反過來,把中文轉成 \u 形式這裡做不到,「跳脫」只處理引號、反斜線和換行這類字元。

「跳脫」和「取消跳脫」有什麼差別,API 回傳滿是 \" 的字串怎麼還原

「跳脫」把文字變成能放進字串裡的樣子(引號前加反斜線,換行變成 \n),結果不含兩側引號;「取消跳脫」做相反的事。API 回傳滿是 \" 的內容時,選「取消跳脫」,兩側有沒有引號都可以。還原後點「⇄ 結果當作輸入」,會自動切到「格式化」繼續整理。

格式化後長數字(如 Snowflake ID)結尾變了怎麼辦

超過 2^53(9007199254740991)的整數,JavaScript 無法精確表示,JSON.parse 讀入時精度就已經遺失,結尾幾位常會變成 0。格式化或壓縮時頁面會提示,列出最多 5 處位置。要保留的話,請讓資料來源把這類 ID 輸出成字串(加雙引號)。

格式化後 1.0 變成了 1,重複的鍵也不見了

格式化和壓縮是先解析再重新輸出,數字會依 JavaScript 的寫法重寫:1.0 變成 1,1E2 變成 100,0.10 變成 0.1,-0 變成 0,數值本身不變。同一個物件裡重複的鍵只保留最後一個,也不會提示。

勾選「鍵排序」後是怎麼排的,陣列會變嗎

所有層級的鍵都依字元編碼由小到大排序,大寫字母排在小寫字母前面,中文依編碼而不是注音;陣列裡元素的順序不變。純數字的鍵(如 "2"、"10")是個例外:JavaScript 規定它們總是排在最前面,並依數值大小排列,所以不勾選鍵排序時它們也會被移到前面。

能處理多大的 JSON,資料會上傳嗎

沒有設定固定的大小上限,輸入超過 100 萬字元時會延後約 0.6 秒再處理,太大的文字主要受瀏覽器記憶體限制。所有處理都在瀏覽器裡完成,頁面沒有向伺服器傳送內容的請求,也不會儲存你輸入的內容。