JSON 美化:線上排版、整理與檢查
貼上原始或壓縮過的 JSON,馬上拿回加好縮排、標好顏色並檢查過的版本。很大的數字、鍵的順序和重複的鍵,都會和你寫的一模一樣。如果 JSON 有錯,你會看到哪裡不對,以及發生在第幾行、第幾欄。
JSON 線上排版:使用步驟
要線上整理 JSON,照下面的步驟做:
- 把 JSON 貼到原始 JSON 欄位(欄位裡寫著「在這裡貼上原始 JSON…」)。貼上後會立刻處理。如果是手動輸入,停止輸入約 300 毫秒後結果會更新。
- 在格式化後的 JSON 查看結果。鍵、字串、數字、true / false 和 null 各有自己的顏色。過長的行會橫向捲動而不會換行,縮排因此維持清楚。
- JSON 正確時,結果下方會出現「JSON 有效。」。不正確的話,紅色的 JSON 無效方塊會說明原因。
- 在結果標題選擇複製。按鈕會短暫顯示「已複製」,你貼上的是沒有顏色的純文字。
- 在下方選擇清除,就能清空欄位重新開始。
JSON 縮排:2 個空格、4 個空格或 Tab
選擇標題旁的齒輪圖示,開啟縮排。可選的有 2 個空格(預設)、4 個空格和 Tab 鍵。選好的當下,排版結果就會改變,這個設定也會套用在你複製的文字上。
資料巢狀很深時,2 個空格的行最短。4 個空格或 Tab 則符合許多專案的風格規範。
為什麼數字和鍵的順序不會變
多數 JSON formatter 會把你的文字解析成物件,再重新輸出。這一來一回,資料會被悄悄改寫。這個工具讀的是你的原始文字,依 JSON 規則檢查,只改動符號之間的空白。其餘內容一個字元一個字元照抄。
同一段輸入 {"id":12345678901234567890,"price":1.0,"tag":"a","tag":"b","b":1,"2":3} 經過這個工具,和先用 JSON.parse 再用 JSON.stringify 的結果比較如下:
- 大數字:在這裡維持
12345678901234567890;用JSON.parse會變成12345678901234567000(被四捨五入)。 - 小數:
1.0維持1.0;另一種做法會變成1。 - 重複的鍵:兩筆
"tag"都保留;另一種做法只剩最後一個值。 - 鍵的順序:
"b"排在"2"前面,和你寫的一樣;另一種做法會把"2"移到最前面。
這對資料庫 ID、訂單編號,以及從 API 回應複製的價格很重要:排版後的文字和原本是同樣的資料,只是更好讀。
JSON 錯誤與 JSON 檢查:訊息是什麼意思
這個工具會做嚴格的 JSON 驗證(RFC 8259)。文字沒通過時,JSON 無效方塊會用白話說明原因,並顯示找到的第一個問題在「第 N 行,第 M 欄」。常見情況:
- 結尾的逗號,例如
[1, 2,]:「右括號前面多了一個逗號。JSON 不允許結尾逗號。」 - 單引號,例如
{'name': 'Ana'}:JSON 要用雙引號,工具會指出位置。 - 註解,例如
// note:「JSON 不允許註解。」 - 沒加引號的屬性名稱,例如
{name: "Ana"}:這裡應該是以雙引號括住的名稱。 - 少了逗號,例如
"b": 2 "c": 3:這裡應該是逗號或右括號。 - 開頭的 0 或
1.,例如01:不是有效的 JSON 數字。 NaN、undefined或其他沒加引號的字:只有 true、false 和 null 可以不加引號。- JSON 後面還有文字,例如
{"a": 1}}:結束後還有多餘的文字。 - 字串裡的換行:請改用跳脫字元寫法,例如
\n。
同一個方塊也會處理沒有結尾的字串、無效的反斜線跳脫,以及到最後仍沒閉合的括號(「文字太早結束」)。從網頁或聊天貼上的不換行空格會顯示成 U+00A0,方便你找出並刪除;檔案最開頭的位元組順序標記則會被忽略。
多行範例:在 {"a": 1,、"b": 2 和 "c": 3} 中,第二行少了逗號。工具會回報「第 3 行,第 2 欄」,也就是 "c" 的起始引號,逗號原本應該出現在它前面。
限制與這個工具不做的事
- 最多 5,000,000 個字元、1000 層巢狀。排版本身只要不到一秒;顯示好幾 MB 的結果可能要幾秒。
- 超過 800,000 個字元時,結果會以無色彩方式顯示,複製仍可使用。
- 只支援嚴格的 JSON。註解、結尾的逗號和單引號只會被指出,不會被接受,也不會被默默修復。
- 不會壓縮、不會排序鍵,也不會轉換成 YAML、CSV 或其他格式。只做排版與驗證。
- 你的 JSON 在瀏覽器內處理,不會上傳或儲存。
常見問題
要怎麼線上排版 JSON?
把 JSON 貼到「原始 JSON」欄位。貼上時會立刻處理,手動輸入則在停止輸入約 300 毫秒後處理,加好縮排的結果會顯示在下方的「格式化後的 JSON」。選擇「複製」就能帶走。整個過程在瀏覽器內完成,JSON 不會被上傳。
JSON 縮排要怎麼改成 4 個空格或 Tab?
選擇標題旁的齒輪圖示開啟「縮排」選單,再選 2 個空格、4 個空格或「Tab 鍵」。預設是 2 個空格,選另一個選項後結果馬上改變。
怎麼知道我的 JSON 是否有效?
貼上就行。有效的內容會被排版,結果下方出現「JSON 有效。」。無效的內容會顯示紅色的「JSON 無效」方塊,用白話說明原因,並告訴你問題在第幾行、第幾欄。
為什麼我的 JSON 會出現結尾逗號的錯誤?
JSON 不允許在物件或陣列的最後一項後面加逗號,例如 [1, 2,]。工具會指向多餘逗號後面的右括號。刪掉逗號,JSON 就能排版了。
JSON 可以有註解嗎?
不行。嚴格的 JSON(RFC 8259)沒有註解語法,所以 // 和 /* */ 都是錯誤,即使有些設定檔允許。工具會在確切的行與欄回報「JSON 不允許註解。」,你把註解刪掉就能繼續。
排版會改變我的數字或鍵的順序嗎?
不會。工具檢查你的原始文字,只改寫符號之間的空白。數字、字串、鍵的順序和重複的鍵都會原樣複製,所以 12345678901234567890 不會被四捨五入,1.0 也還是 1.0。先用 JSON.parse 再用 JSON.stringify 則會改變這一切。
可以處理很大的 JSON 檔案嗎?
可以,最多 5,000,000 個字元、1000 層巢狀。排版本身不到一秒,但顯示好幾 MB 的結果可能要幾秒。超過 800,000 個字元時,為了維持速度會以無色彩方式顯示,「複製」仍可使用。
我的 JSON 會被上傳到哪裡嗎?
不會。JSON 完全在你的裝置上處理,不會上傳或儲存。
json formatter、json 檢查和 json 驗證有什麼不同?
formatter 會加上換行與縮排,讓 JSON 更好讀。檢查或驗證則是確認文字是不是合法的 JSON。這個工具一步完成兩件事:嚴格驗證,JSON 有效時就順便排版。