JSON 線上格式化

左側貼上或輸入 JSON 文字,右側即時格式化並解析成可摺疊的樹狀結構,語法有錯會直接指出位置。也可以直接填一個 JSON 的網址抓取內容(需要對方 API 允許跨來源存取)。支援逐個節點展開/摺疊、一鍵全展開/全摺疊、格式化與壓縮、複製節點路徑與值。解析全部在瀏覽器本機完成,不會把你的內容傳給本站。
JSON 網址
JSON 文字
等待輸入
樹狀結構
解析結果會顯示在這裡。
等待輸入
說明:
1. 輸入內容變化後會自動解析,無需點擊按鈕;解析失敗時會在右側提示出錯位置(行號 / 欄號)。
2. 點擊節點前的三角圖示可摺疊或展開該節點;摺疊時會顯示該節點包含的元素個數。
3. 滑鼠停留在節點上時,右側會出現複製按鈕,可複製該節點的路徑(如 data.items[0].id)與對應的值。
4. 「跳脫 / 去跳脫」用於處理被當作字串巢狀的 JSON,例如日誌裡帶反斜線的 JSON 片段。
5. 頂部的「JSON 網址」可以直接抓取遠端 JSON,按 Enter 即可。只有對方允許跨來源存取(回應帶 Access-Control-Allow-Origin)時才能取到;頁面無法偽造 Referer,核取方塊只能選擇傳或不傳。

關於 JSON 格式化與驗證

格式化和壓縮分別在什麼時候用

兩者改的只是空白字元,資料本身一模一樣。格式化是加上換行和縮排給人看的,串接 API、看日誌、審設定檔的時候用;壓縮是把所有多餘空白去掉,減小體積,寫進請求主體、存進資料庫或塞進環境變數的時候用。一段擠成一行的 JSON 不是「壞掉了」,只是沒有為閱讀排版,貼進來格式化一下即可。

報錯最常見的幾種原因

按出現頻率大致是:最後一個元素後面多了一個逗號;用了單引號而不是雙引號;寫了雙斜線註解;鍵名沒加引號;值裡出現了 NaN、undefined 或者 Python 風格的 True / None;字串裡有沒跳脫的換行或反斜線。這些寫法在 JavaScript 或 Python 原始碼裡都合法,但 JSON 標準不接受,從程式碼裡複製片段過來時尤其容易踩到。還有一種看不見的情況是檔案開頭帶 BOM 或不可見空白,從記事本另存或從網頁複製時可能混進來。

為什麼用樹狀結構看 API 回應

真實 API 回應常常巢狀五六層,光靠縮排翻找很累。樹狀檢視可以把不關心的分支摺疊起來,一眼看清陣列有多少個元素、某個欄位在第幾層,也能直接把節點路徑複製出來貼到程式碼裡。排查線上問題時,日誌裡的 JSON 往往是被當成字串再次巢狀的,帶著一堆反斜線,先去跳脫再解析就能正常展開。

JSON 和 JavaScript 物件不是一回事

JSON 是一種資料交換格式,只有物件、陣列、字串、數字、布林和 null 六種型別,鍵必須用雙引號包起來,不允許函式、日期物件、註解和尾隨逗號。JavaScript 的物件字面值比它寬鬆得多。另外 JSON 數字沒有精度上限的規定,而多數解析器按雙精度浮點處理,超過 2 的 53 次方的整數(比如雪花演算法產生的 ID)會遺失末尾幾位,這類欄位建議在 API 裡就用字串傳。

常見問題

JSON 資料會上傳到伺服器嗎?

不會。解析、格式化、樹狀顯示和複製都在瀏覽器本機透過 JavaScript 完成,頁面沒有後端 API,也不會把你貼上的內容傳送到任何伺服器。適合檢視包含內部欄位的 API 回應、日誌片段和設定檔。用「JSON 網址」抓取時也一樣不經過本站:請求是你的瀏覽器直接送給那個網址的。當然,那台伺服器本身會看到這次存取,所以內網網址和連結裡帶 token 的 API 請自己斟酌。

可以直接輸入 JSON 的網址嗎?

可以。把網址填進頂部的「JSON 網址」欄,點「獲取」或直接按 Enter,內容會抓下來放進左邊並立刻解析;只寫 example.com/data.json 這樣的裸網址也行,會自動補上 https://。前提是那個網址允許跨來源存取 —— 瀏覽器只有在回應裡看到 Access-Control-Allow-Origin 才會把內容交給頁面。raw.githubusercontent.com、jsDelivr 和多數公開 API 都滿足,公司內網 API 和需要登入的 API 通常不滿足。

提示「獲取失敗」是什麼原因?

大多數時候是跨來源被擋。瀏覽器出於安全考量不會把失敗原因告訴頁面,只給一個籠統的錯誤,所以工具也只能籠統地提示 —— 按 F12 打開主控台,真正的原因寫在那裡。如果確認是跨來源,頁面這邊沒有辦法繞過:本站是純靜態的,沒有後端可以代抓,也不會把你的網址轉發給第三方代理服務,那等於把網址連同裡面可能帶的 token 一起交出去。可行的辦法是把 JSON 下載到本機再貼進來,或者用 curl 取下來。另外,http 開頭的網址在本頁(https)會被瀏覽器當成混合內容直接擋掉,請求根本送不出去。

可以自訂 Referer 嗎?

不能,這是瀏覽器的硬性限制。Referer 屬於「禁止修改的請求標頭」,頁面腳本給它賦值會被靜默忽略;fetch 另有一個 referrer 選項,但只要填的是別人的網域,瀏覽器同樣會悄悄換回本頁自己的網址 —— 兩種寫法都不會報錯,只是不生效。所以網頁裡聲稱能偽造 Referer 的工具,背後一定有一台伺服器在替你送請求。頁面真正能選的只有兩種:按預設傳送本站來源,或者勾上「不傳送 Referer」一個都不傳 —— 後者對某些拿來源做防盜連結的網址有用。

提示 JSON 解析失敗怎麼辦?

右側會顯示瀏覽器回報的錯誤訊息以及大致的行號和欄號。常見原因包括:使用了單引號而不是雙引號、鍵名沒有加引號、最後一個元素多了逗號、內容裡混入了註解,或者複製時把 JSON 截斷了。按提示定位到對應位置修正即可。

為什麼很大的 JSON 開啟會有點慢?

樹狀結構需要為每個節點產生一個 DOM 元素,節點數量非常多時渲染會變慢。工具對超大文件預設只展開前幾層,其餘部分保持摺疊狀態,展開時再渲染,可以顯著減少卡頓。如果檔案特別大,建議先擷取關心的片段再檢視。

「跳脫 / 去跳脫」按鈕是做什麼的?

有些日誌或資料庫欄位會把一段 JSON 當成字串儲存,內容裡全是 \" 這樣的反斜線。點「去跳脫」可以把這種字串還原成正常 JSON 再解析;反過來點「跳脫」,則把目前的 JSON 轉成可以嵌進字串裡的形式。

可以複製某個節點的路徑嗎?

可以。滑鼠停留到任意節點行,右側會出現複製圖示,點擊後複製該節點的存取路徑,例如 data.items[0].name,可以直接貼上到程式碼或除錯工具裡使用。按住 Shift 再點擊則複製該節點的值。

支援 JSON5、JSONC 或帶註解的 JSON 嗎?

解析使用瀏覽器內建的標準 JSON.parse,因此只支援標準 JSON 語法,不支援註解、單引號、尾隨逗號和未加引號的鍵名。如果你的內容屬於 JSON5 / JSONC,需要先手動去掉這些擴充寫法。

很大的數字會顯示不準確嗎?

JavaScript 的數字精度有限,超過 2^53 的整數(例如某些雪花 ID)在解析後可能出現末尾幾位變化。這是所有基於 JSON.parse 的工具的共同限制。遇到這類欄位,建議在伺服器端把 ID 用字串型別回傳。

API 回應裡那串十位數字是什麼?

多半是 Unix 時間戳記。10 位是秒、13 位是毫秒,格式化之後仍然是一串數字,樹狀檢視不會替你翻譯它。把它貼到時間戳轉換裡就能看到對應的日期,也能反過來把日期轉成時間戳記去建構請求參數。