RevealTheme logo

JSON格式化與驗證工具

格式化、美化、驗證並壓縮JSON。完全在你的瀏覽器中執行,因此你的資料永遠不會離開你的裝置。

如何使用本工具

  1. 1

    將你的JSON貼到輸入框中。

  2. 2

    點擊「格式化」以帶縮排、易讀的方式顯示,或點擊「壓縮」以移除空白。

  3. 3

    錯誤會指出剖析失敗的確切行和列。

  4. 4

    將結果複製到剪貼簿。

什麼是JSON,為什麼格式化很重要?

JSON(JavaScript Object Notation)是現代Web API、設定檔和結構化事件日誌的通用語言。每個REST和GraphQL API都會傳回JSON;每個package.json、tsconfig.json以及大多數CI設定都是JSON;AWS、GCP和Azure在它們的CLI中都使用JSON交流。JSON的強項在於其極簡的語法:六個結構字元({}、[]、逗號、冒號、引號)、四種基本類型(字串、數字、布林值和null)以及遞迴巢狀。這種極簡同時也是它的不便之處:JSON不支援註解、尾隨逗號、無引號的鍵,也不支援多行字串。一個放錯位置的引號或逗號就會破壞整個文件。本工具會依照RFC 8259(JSON規範)驗證輸入,然後以一致的縮排呈現以便閱讀,或移除所有空白以便透過網路傳輸。剖析和格式化完全在你的瀏覽器中執行,使用的是JavaScript引擎原生的JSON.parse和JSON.stringify函式,與執行在Node.js伺服器和所有瀏覽器中的程式碼完全相同。這意味著你的資料永遠不會經過網路傳輸,而這裡的驗證行為也與你的生產環境程式碼所見完全一致。

常見使用場景

  • 透過將API回應貼到格式化工具中來除錯它們:立即看清被壓縮的JSON所隱藏的結構。

  • 在將JSON傳送給嚴格的消費方(AWS CloudFormation、Kubernetes清單等)之前進行驗證。

  • 美化結構化日誌函式庫(Pino、Bunyan)輸出的單行JSON日誌。

  • 在將設定檔嵌入HTML或環境變數之前對其進行壓縮(需要剖析的位元組更少)。

  • 在從base64解碼後格式化JSON Web Token的負載。

  • 透過格式化兩個API回應並觀察它們的差異來進行對比。

常見問題

我的JSON會離開瀏覽器嗎?
不會。所有剖析和格式化都透過內建的JSON.parse和JSON.stringify函式在你的瀏覽器中完成。資料永遠不會到達伺服器,也不會出現在日誌中。用它來處理包含權杖、客戶資料或其他機密的API回應是安全的。
我能格式化JSON5或JSONC(帶註解的)嗎?
不能:本工具遵循嚴格的JSON規範(RFC 8259)。註解和尾隨逗號是語法錯誤,會產生剖析器的錯誤訊息。對於寬鬆的JSON變體,請使用JSON5剖析器(如json5.org),或先讓你的輸入通過一個移除註解的前置處理器。
我應該使用多大的縮排?
2個空格是JavaScript和Web的慣例,也最為通用。4個空格是Python生態系統的預設值(與PEP 8的縮排一致)。Tab在不同編輯器中的呈現並不一致,且會破壞對比工具;除非你的團隊有嚴格的Tab慣例,否則請避免使用。這個選擇純屬審美;剖析器並不在意。
為什麼壓縮後的JSON很重要?
壓縮後的JSON可節省位元組,這在大規模場景下意義重大(例如,一個傳回100KB資料、面對數百萬次請求的公開API)。對於小型設定檔(僅幾KB),差異可以忽略不計。瀏覽器對格式化和壓縮後的JSON的剖析時間是相同的,因此壓縮的唯一理由就是頻寬。
我該如何解讀錯誤訊息?
JavaScript的JSON.parse錯誤訊息包含剖析失敗的位置(從開頭算起的偏移量)。常見錯誤:「Unexpected token」通常表示缺少引號或逗號,或存在未轉義的特殊字元。「Unexpected end of JSON input」意味著文件被截斷。「Unexpected non-whitespace character」往往表示存在尾隨逗號。
我能格式化非常大的JSON檔案嗎?
瀏覽器的JSON.parse在效能變得棘手之前,可處理最大約100MB的檔案。對於更大的檔案,請在命令列中使用jq:它可以串流處理任意大小的JSON檔案。
JSON和JavaScript物件字面值有什麼區別?
JSON是JavaScript物件字面值語法的一個嚴格子集。區別在於:JSON的鍵必須是用雙引號括起來的字串(JS允許無引號的鍵和單引號);JSON禁止註解、尾隨逗號和undefined;JSON沒有運算式、函式呼叫或計算值。JavaScript可以安全地求值JSON;JSON無法求值任意的JavaScript。

相關工具