格式化並驗證 JSON
讓 JSON 更容易閱讀、檢查語法或產生精簡版本。本指南介紹縮排、鍵排序及儲存結果的方法。
試用提供的範例
下載 order-options.json,這是一份包含兩件商品的虛構訂單,欄位名稱使用英文。customer 物件包含姓名和城市;items 陣列依序包含 CARD-02 和 BOX-01。範例中有帶引號的文字、數值形式的數量和價格、布林值 true,以及表示空白配送備註的 null。欄位刻意未排序,方便觀察排序選項的效果。
操作步驟
- 開啟JSON 格式化與驗證器。使用檔案開啟提供的 order-options.json,或將檔案內容貼到輸入參數。
- 將縮排設為 2,表示每層縮排兩個空格。首次執行時不要勾選排序物件鍵。
- 選取處理輸入。工具會先檢查 JSON 語法,再顯示結果。如果回報錯誤,請根據行號和欄號找到問題,修正輸入後重試。
- 閱讀結果。customer 物件和兩件商品應更容易理解,每行顯示一個欄位或清單項目。未勾選排序時,欄位保留範例中的順序。
- 選取下載結果以儲存 formatted.json。也可以使用複製文字將結果放入其他編輯器。
- 在文字編輯器中開啟下載的檔案,按照下方檢查項目與範例比較。接著試用其他縮排和排序選項,每次變更後都重新選取處理輸入。
前後比較範例
這些簡短範例將 order-options.json 中的 customer 物件呈現為一份小型 JSON 文件。比較每種設定前後相同的姓名和城市。末尾的選用參考區段會顯示完整訂單。
讓精簡 JSON 更容易閱讀
將縮排設為 2,不勾選排序物件鍵,然後選取處理輸入。結果會加入換行及每層兩個空格,同時保留欄位的原始順序。
之前:精簡輸入
{"customer":{"name":"Zoë","city":"Bergen"}}之後:兩個空格的縮排
{
"customer": {
"name": "Zoë",
"city": "Bergen"
}
}排序物件內的鍵
保持縮排為 2,勾選排序物件鍵,然後選取處理輸入。在 customer 內,city 現在位於 name 之前。兩個值都保持不變。
之前:原始鍵順序
{
"customer": {
"name": "Zoë",
"city": "Bergen"
}
}之後:已排序的物件鍵
{
"customer": {
"city": "Bergen",
"name": "Zoë"
}
}精簡 JSON
在縮排中選擇壓縮,不勾選排序物件鍵,然後選取處理輸入。格式化空格和換行會被移除;文字和欄位順序保持不變。
之前:兩個空格的縮排
{
"customer": {
"name": "Zoë",
"city": "Bergen"
}
}之後:壓縮
{"customer":{"name":"Zoë","city":"Bergen"}}選擇縮排
| 選項 | 作用 |
|---|---|
| 2 | 每層巢狀結構使用兩個空格。這是主要操作步驟使用的設定。 |
| 4 | 每層巢狀結構使用四個空格,讓巢狀物件和陣列更加明顯。 |
| ↹ | 每層巢狀結構使用一個定位字元。定位字元的顯示寬度取決於文字編輯器。 |
| 壓縮 | 移除格式化空格和換行。帶引號文字內的空格仍屬於該文字。需要精簡輸出時選擇此項,然後選取處理輸入。 |
變更輸入或選項會清除上一次結果。重新選取處理輸入,以新設定產生結果。工具每次都會讀取輸入區域,不會自動將上一次結果填回輸入。
排序物件鍵
不勾選排序物件鍵可保留各物件原始的欄位順序。勾選後,會在整份文件中按區分大小寫的文字順序排列鍵,包括陣列內的物件。陣列項目本身保留原始順序。
- 保持縮排為 2,勾選排序物件鍵,然後選取處理輸入。
- 最上層的鍵現在依序為 customer、deliveryNote、items、order 和 paid。customer 內的 city 位於 name 之前。每件商品內的 price 位於 quantity 和 sku 之前。
- items 陣列仍然是 CARD-02 在前、BOX-01 在後。鍵排序不會按 sku 或價格重新排列商品。
複製、下載及重新開始
| 選項 | 作用 |
|---|---|
| 複製文字 | 將目前結果複製為文字。如果無法複製,工具會選取結果,方便手動複製。 |
| 下載結果 | 將目前結果儲存為 formatted.json。格式化、精簡及排序後的結果都使用此檔名;如需保留多個版本,請重新命名檔案。 |
| 列印結果 | 為結果文字開啟瀏覽器的列印對話方塊。 |
| 載入範例 | 以工具內建範例取代輸入,並按目前設定處理。該範例與本指南的 order-options.json 不同。 |
| 全部清除 | 清除輸入、選取的檔案和結果。縮排和排序設定保持不變。 |
檢查下載的 JSON
- 在文字編輯器中開啟 formatted.json。確認訂單為 ORD-1042,客戶是住在 Bergen 的 Zoë,並且有兩件商品。
- 檢查值及其型別:quantity 依序是數值 2 和 1,價格保留 19.50 和 5.00,paid 是不帶引號的布林值 true,deliveryNote 是不帶引號的 null。帶引號的姓名和商品代碼仍是字串。
- 試用排序物件鍵後,確認欄位順序符合上述說明,並確認 items 陣列中的 CARD-02 仍在 BOX-01 之前。
- 試用壓縮和處理輸入。將結果貼回輸入參數,將縮排設為 2,再次選取處理輸入。與原始範例比較值和商品順序;格式設定應保留這些內容。
常見問題與疑難排解
為什麼顯示 JSON 無效?
檢查回報的行、欄及該位置之前的欄位。鍵和文字需要雙引號;欄位需要逗號和冒號;方括號和大括號必須閉合。修正輸入後重新選取處理輸入。驗證只檢查 JSON 語法,因此有效結果仍可能缺少應用程式所需的欄位。
可以使用註解或尾端逗號嗎?
刪除註解,以及緊鄰結尾方括號或大括號之前的逗號。它們不屬於有效 JSON。格式化工具要求有效輸入,不會自動修復。
重複鍵警告是什麼意思?
「已保留重複物件鍵。部分讀取程式會捨棄重複鍵。」表示同一物件中某個鍵出現多次。格式化工具會保留這些項目並發出警告。檢查來源資料,選擇需要的值並刪除多餘項目;其他應用程式可能只保留其中一個。
為什麼檔案無法開啟或處理?
輸入上限為 2 MiB,即 2,097,152 位元組。本機文字檔必須使用 UTF-8。如果工具顯示資料過於複雜,請減少巢狀層數或項目數量。將大型輸入拆成較小且完整的 JSON 文件,不要在物件或陣列中間截斷。
為什麼長數字在其他應用程式中會改變?
下方獨立的精確度範例包含 9007199254740993 和 0.10000000000000001。此格式化工具在所有縮排和排序設定下都完整保留這些數字的原始文字。格式化 exact-numbers.json,然後在文字編輯器中與 exact-numbers-formatted.json 比較。匯入結果的應用程式仍可能對數字進行捨入,因此請確認它支援所需精確度。00123 這類含有前置零的代碼,在 JSON 中必須是帶引號的字串。
格式化可以還原已經捨入的數字嗎?
格式化無法還原文字進入工具之前已被捨入或刪除的數字。請回到原始來源,重新匯出完整值。如果該值是識別碼而非數量,使用字串可以幫助接收端應用程式保留全部數字。
選用:比較範例和參考輸出
這些程式碼範例和下載檔案由工具頁面使用的同一格式化工具從 order-options.json 產生。格式化和精簡參考輸出關閉鍵排序;排序參考輸出使用兩個空格縮排並開啟排序。
原始範例
{"order":"ORD-1042", "customer": {"name":"Zoë","city":"Bergen"}, "items":[{"sku":"CARD-02", "quantity":2,"price":19.50},{"sku":"BOX-01","quantity":1, "price":5.00}], "paid":true, "deliveryNote":null}
兩個空格;原始鍵順序
{
"order": "ORD-1042",
"customer": {
"name": "Zoë",
"city": "Bergen"
},
"items": [
{
"sku": "CARD-02",
"quantity": 2,
"price": 19.50
},
{
"sku": "BOX-01",
"quantity": 1,
"price": 5.00
}
],
"paid": true,
"deliveryNote": null
}壓縮;原始鍵順序
{"order":"ORD-1042","customer":{"name":"Zoë","city":"Bergen"},"items":[{"sku":"CARD-02","quantity":2,"price":19.50},{"sku":"BOX-01","quantity":1,"price":5.00}],"paid":true,"deliveryNote":null}兩個空格;已排序的物件鍵
{
"customer": {
"city": "Bergen",
"name": "Zoë"
},
"deliveryNote": null,
"items": [
{
"price": 19.50,
"quantity": 2,
"sku": "CARD-02"
},
{
"price": 5.00,
"quantity": 1,
"sku": "BOX-01"
}
],
"order": "ORD-1042",
"paid": true
}| 參考檔案 | 設定 | 位元組 |
|---|---|---|
| order-formatted.json | 兩個空格;原始鍵順序 | 300 |
| order-minified.json | 壓縮;原始鍵順序 | 193 |
| order-sorted.json | 兩個空格;已排序的物件鍵 | 300 |
這些是實際的文字輸出,而非介面截圖。程式碼可能會依螢幕寬度自動折行。參考檔名用來區分範例;工具本身下載的每個版本都命名為 formatted.json。