使用方法
- 貼上 JSON、開啟檔案或嘗試範例。
- 調整設定,結果會隨輸入更新。
- 複製或下載格式化結果。
認識 JSON
JSON 是用於交換結構化資料的文字格式,常見於 API 回應、設定檔案和匯出記錄。它的值類型不多,方便在不同程式語言之間傳遞資料。
格式化讓結構更易查看。縮排顯示哪些值屬於同一層級,換行讓巢狀記錄更易瀏覽。這些排版選擇不會改變有效文件所表示的資料。
值與結構
JSON 文件包含一個值。根層級值可以是物件或陣列,也可以是字串、數字、布林值或 null。物件將字串名稱與值關聯,陣列按有意義的順序儲存值。兩者都可以巢狀。
| 類型 | 範例 | 含義 |
|---|---|---|
| 物件 | {"name": "Ada"} | 花括號中的命名屬性。 |
| 陣列 | ["red", "blue"] | 方括號中的有序序列。 |
| 字串 | "Hello, world" | 用雙引號包圍的文字。 |
| 數字 | -12.5e2 | 十進位數字,可帶指數。 |
| 布林值 | true / false | 兩個邏輯值之一。 |
| 空值 | null | 明確的空值,並非省略屬性。 |
需要注意的語法
屬性名稱和字串必須使用雙引號。名稱與值之間用冒號分隔,物件成員和陣列元素之間用逗號分隔。最後一個成員或元素後不要加逗號。註解、單引號和 JavaScript 表達式都不屬於嚴格 JSON。
字面值 true、false 和 null 必須小寫。數字使用十進位寫法,可帶負號、小數和指數。前導零、開頭的加號、NaN 和 Infinity 均無效。字串內的引號、反斜線和控制字元必須跳脫;換行必須寫成 \n 這樣的跳脫形式。
為了可靠地交換資料,物件名稱應唯一。名稱重複時,不同讀取程式可能保留不同的值。格式化工具會報告並保留重複項,由你決定如何處理。僅通過語法檢查,無法確認文件符合 API 約定或 JSON Schema。
格式化保留哪些內容
DevToolsy 驗證輸入,並調整原始 token 周圍的空白。它保留 900719925474099312345、19.9900、1e+400、-0 等數字文字,以及字串原本的跳脫寫法。這樣可避免將數字解析為 JavaScript 浮點值後重新序列化造成的捨入。讀取結果的應用程式仍會自行決定數值精度。
縮排、LF 或 CRLF 換行字元及末尾換行屬於輸出慣例。「排序鍵名」是獨立的可選操作:依解碼後的名稱,以固定且區分大小寫的比較方式遞迴排列物件成員。陣列順序與重複名稱的相對順序保持不變。這個功能方便閱讀與比較差異,不是用於密碼學簽章的正規化方案。
{"name":"Ada","roles":["developer","reviewer"],"active":true}{
"name": "Ada",
"roles": [
"developer",
"reviewer"
],
"active": true
}縮排改變顯示方式。屬性名稱、值和陣列順序保持不變。
最多支援 5 MiB UTF-8 輸入、20 MiB 輸出、128 層巢狀、250,000 個掃描 token,每次執行最長 10 秒。較大的文件可能需要效能更好的裝置。
常見問題
自動格式化會更改輸入嗎?
不會。輸入短暫停頓後,唯讀結果會更新,你輸入的內容則維持原樣。自動格式化預設開啟。關閉後,可按「格式化 JSON」或 Ctrl/⌘ + Enter 手動執行。
JSON 尚未輸入完整時會怎樣?
編輯期間,上一次有效結果仍會顯示。目前輸入和設定產生有效結果之前,「複製」和「下載」不可用。選擇錯誤可跳至輸入中的對應位置。
格式化會捨入大數或更改字串跳脫嗎?
不會。原始數字 token 和字串跳脫寫法均保留,包括長整數、小數末尾的零、指數寫法和負零。其他應用程式可能以不同精度解讀這些數字。
排序鍵名會同時重排陣列嗎?
不會。鍵名排序只遞迴套用至物件。陣列保留原順序,重複名稱也保留相對順序。排序預設關閉。
格式化工具能修復註解或尾端逗號嗎?
工具只接受嚴格 JSON,會報告無效語法,不會猜測如何修復。註解、單引號字串、未加引號的鍵名和尾端逗號都需要在輸入中修正。
JSON Beautifier 和 JSON Formatter 是一回事嗎?
是的。本頁的美化、pretty-print 和格式化都表示為 JSON 新增易讀的縮排和換行。需要精簡文件時,請使用 JSON 壓縮工具。
JSON 會離開我的裝置嗎?
貼上的文字和本機檔案都在瀏覽器中處理。DevToolsy 不會上傳 JSON,也不儲存文件歷程記錄。如需保留,請在離開前複製或下載結果。