ToolAct工具行動

JSON 格式化工具

JSON 輸入
格式化輸出
行數: 1字元數: 0字節數: 0
行數: 1字元數: 0

什麼是 JSON 格式化?

JSON 格式化工具會為壓縮或混亂的 JSON 加上縮排、換行和清楚層級,使其更容易閱讀和排查。JSON 常用於 API 回應、設定檔、日誌、功能開關、測試資料和低程式碼整合,一個缺少逗號、錯誤引號或意外巢狀都可能導致解析失敗。這個工具能協助快速查看物件、陣列、鍵、值和可能出錯的位置,也可以在需要較小載荷時重新壓縮。格式化不會改變資料含義,也不會自動驗證業務 Schema;在正式介面中,欄位型別、必填項、null 處理和版本契約仍需要單獨檢查。

使用方式

使用方式

  1. 在左側輸入框中貼上或輸入 JSON 資料
  2. 選擇縮排大小(2 個空格、4 個空格或 Tab)
  3. 點選「格式化」美化排版,或點選「壓縮」移除空白
  4. 結果會自動顯示在右側,並附語法高亮
  5. 點選「複製」或「下載」儲存結果

JSON 驗證注意事項

  • 格式化可驗證文字為合法 JSON,但無法保證資料符合您的業務結構。
  • 出現錯誤時,請檢查錯誤訊息提示的行與列,是否有多餘的單引號、尾隨逗號、註解或未轉義的控制字元。

使用場景

在瀏覽器中直接檢查 API 回應貼上壓縮的回應內容,以兩個空格、四個空格或 Tab 展開巢狀物件和陣列。解析錯誤時會盡可能計算出行號和列號,讓你不用肉眼在整個文件中搜尋就能修正格式異常的回應。
為提交和審查準備 JSON當設定檔、範例測試資料或翻譯資料需要統一排版時,格式化工具會以選定的縮排產生確定性的輸出。需要反向操作時,壓縮模式可將同一份資料複製到環境變數或請求欄位中。
在本機清理敏感資料解析器、格式化器、壓縮器、複製和下載步驟全都在瀏覽器中執行,讓 token、客戶欄位、內部功能開關和未發布的 API 結構遠離第三方美化工具。請另外對照 OpenAPI 或 JSON Schema 規範驗證輸出,因為格式化只能證明文件可解析,無法保證資料符合消費者期望的契約,同時留意大型數值欄位的隱式型別強制轉換。
逐欄位對比兩個 JSON payload分別格式化舊版和新版回應並使用相同的縮排,然後在差異檢視器中並排對齊,找出重新命名的欄位、型別變更以及 null 與缺少欄位的差異。這比掃描原始壓縮 JSON 快得多,尤其適用於 Webhook payload 中單一欄位的變動導致消費者端出錯的情境。
壓縮用於環境變數或 curl payload切換到壓縮模式,將大型設定內容塞入單行環境變數、.env 檔案或 curl --data 參數中。之後請與目標解析器確認,因為部分 HTTP 使用者端對於超過數百 KB 的超長單行內容仍有問題。嚴格 JSON(RFC 8259)禁止尾隨逗號和註解,因此當輸入為 JSON5 或 HJSON 時,嚴格解析器會拒絕以 // 開頭或以 ,] 結尾的行;此時請啟用寬容模式或在格式化前移除註解。超過 2^53 的大整數會因 JavaScript 以 IEEE-754 雙精度浮點數表示而失去精度。

技術原理

JSON(JavaScript Object Notation)由 RFC 8259 / ECMA-404 定義。其語法是 JavaScript 物件字面值的嚴格子集:字串必須以雙引號包裹,鍵必須加引號,尾隨逗號不合法,註解被禁止。格式化器使用 `JSON.parse()` 將文件解析為宿主語言的物件圖,然後透過 `JSON.stringify(value, replacer, indent)` 重新序列化,其中 indent 為數字(1-10 個空格)或字串(`'\t'`)。解析是 O(n) 複雜度,通常比 stringify 階段更快,因為輸出建構需要配置新字串。 數值處理遵循 IEEE 754 雙精度浮點數:大於 `Number.MAX_SAFE_INTEGER`(2^53 - 1 = 9007199254740991)的整數會失去精度,因此 `9007199254740993` 往返後變成 `9007199254740992`。小數重複如 `0.1 + 0.2` 經解析後為 `0.30000000000000004`。Unicode 字串允許 `\uXXXX` 跳脫,包括代理對(`\uD83D\uDE00` → 😀);解析器拒絕孤立的未配對代理項。空白僅在字串內有意義——詞法單元之間的空格、Tab、LF、CR 的任意組合解析結果相同。 常見的非標準寬容格式包括 JSON5(註解、尾隨逗號、無引號鍵)和 JSONC(VS Code 設定檔)。標準 JSON 不允許這些,`JSON.parse` 遇到時會拋出 `SyntaxError`。串流替代方案如 NDJSON(每行一個物件)和 JSON Lines 可避免將整個文件載入記憶體。對於深度巢狀的輸入,V8 堆疊限制(約 10,000 個幀)會限制基於遞迴的解析器;正式環境的解析器使用迭代式狀態機來突破此上限。

  • RFC 8259 / ECMA-404 語法——六種值型別(物件、陣列、字串、數字、true/false、null);字串使用雙引號;鍵必須加引號;無尾隨逗號;無註解。
  • `JSON.parse(text)` 為 O(n) 複雜度,對無效輸入拋出帶字元偏移量的 `SyntaxError`;`JSON.stringify(value, replacer, indent)` 以 2-10 個空格或 `'\t'` 縮排產生格式化輸出。
  • IEEE 754 數值精度:`Number.MAX_SAFE_INTEGER = 2^53 - 1`;超出此範圍的整數會四捨五入到最接近的可表示雙精度值,因此聊天 ID 和 Twitter Snowflake ID 必須以字串傳輸。
  • Unicode `\uXXXX` 跳脫支援整個 BMP;非 BMP 字元需要代理對編碼 `\uD83D\uDE00`;解析器依 RFC 8259 第 8.2 節拒絕孤立的未配對代理項。
  • 常見解析失敗:單引號字串(`'foo'`)、最後一個陣列/物件元素後的尾隨逗號、字串內未跳脫的控制字元、未跳脫的反斜線、缺少關閉 `}`/`]`、開頭的 BOM(`\uFEFF`)。
  • 循環引用在 `JSON.stringify` 中拋出 `TypeError: cyclic object value`;使用帶 WeakSet 的 `replacer` 回呼來打斷循環,或使用 `flatted` / `json-stringify-safe` 等函式庫。
  • 非標準變體:JSON5(`.json5`,允許註解和尾隨逗號)、JSONC(VS Code 設定檔)、NDJSON / JSON Lines(每行一個物件,串流友善)——全部被嚴格的 `JSON.parse` 拒絕。

範例

物件範例

輸入:
{
  "name": "ToolAct",
  "type": "web tool",
  "active": true
}

輸出: 以 2 個空白縮排美化輸出,鍵的順序保持穩定

陣列範例

輸入:  [1,2,3,"a","b","c"]
輸出: 以 2 個空白縮排格式化;數字維持數值型別,字串保留引號

巢狀結構

輸入:
{"user":{"name":"Alex","skills":["JavaScript","Python"]}}

輸出:
{
  "user": {
    "name": "Alex",
    "skills": [
      "JavaScript",
      "Python"
    ]
  }
}
備註: 巢狀的物件與陣列會遞迴縮排;可在工具列選擇縮排寬度

常見問題

這個格式化工具會做什麼?

重新格式化 JSON:以您選擇的縮排(2 或 4 個空格)美化排版,或壓縮成單行。解析過程會同時驗證,因此語法錯誤會以行列號回報。

為什麼我的 JSON 被判為無效?

常見原因:尾隨逗號(JS 合法、JSON 不合法)、單引號字串(必須是雙引號)、未加引號的鍵、註解(// 或 /* */),或括號缺失。本頁會回報解析失敗的位置。JSON5 與 JSONC(含註解的 JSON)是 JSON 的超集——若需要請改用其他解析器。

鍵的順序會被保留嗎?

JSON 規範規定鍵的順序沒有意義,但大多數解析器在來回轉換時都會保留。本工具會保留插入順序,這通常更利於做差異比對。

可以處理非常大的 JSON 檔案嗎?

現代瀏覽器可以處理 10–50 MB 的 JSON 檔,但編輯器可能會變慢。對於數百 MB 的檔案,建議使用串流式解析器(jq 命令列工具、ndjson 工具);瀏覽器解析器會把整棵樹載入記憶體。

我的 JSON 會被上傳嗎?

不會。解析與格式化都在您的瀏覽器中透過 JSON.parse 與 JSON.stringify 完成。貼上的 JSON 不會被傳輸出去。

為什麼大數字會失去精度?

JavaScript 的 JSON.parse 使用 Number,也就是 IEEE 754 雙精度浮點。超過 2^53 的整數會失去精度(例如 9007199254740993 會被默默地四捨五入)。若需要 BigInt 或保留字串形式的解析,請改用自訂解析器,或在產生端就將大數字標記為字串。

JSONC(含註解的 JSON)呢?

嚴格 JSON 不允許註解。部分 IDE(如 VS Code 的設定檔)使用 JSONC,額外支援 // 與 /* */ 註解。格式化工具通常會提供「JSONC」模式以保留註解;在嚴格模式下,註解就是語法錯誤。