若要在 IntelliJ IDEA 中格式化 JSON,請將游標置於 IDE 辨識為 JSON 的檔案內,然後按下 Reformat Code(在 Windows/Linux 為 Ctrl+Alt+L,在 macOS 為 Cmd+Option+L);IntelliJ 會套用您專案的 JSON 程式碼風格規則來處理縮排、引號樣式與換行,而不會更動任何資料。JSON 本身是一種文字格式,已標準化為 RFC 8259(同樣的資料交換規格也以 ECMA-404 形式發布),僅定義了六種數值類型——物件、陣列、字串、數字、布林值與 null——因此格式化工具可以自由重新排列空白字元,而不會改變文件的語意。正是這種「語意」與「排版」之間的清楚區隔,讓 IntelliJ 內建的 JSON 外掛能直接處理 .json 檔案,以及 Java、Kotlin 與 JavaScript 原始碼中形如 JSON 的字串常值,完全無需額外設定。若狀態列的語言指示顯示為 Plain Text 或 Java 而非 JSON,Reformat Code 仍可執行,但 JSON 專屬規則——強制引號、清除尾端逗號、依結構描述進行縮排——將不會套用。若需要壓縮、附行列號定位的驗證,或格式化無法在 IDE 內開啟的 JSON,使用像 JSON Formatter 這類覽器工具是實用的補充方案,且完全在用戶端執行。

how to format json in intellij
在 IntelliJ IDEA 中格式化 JSON:快捷鍵與瀏覽器工具

在 IntelliJ IDEA 內格式化 JSON

IntelliJ IDEA 的 JSON 支援隨 JavaScript 與 TypeScript 外掛一同提供,該外掛在所有標準安裝中皆為內建且預設啟用。這代表專案結構中的 .json 檔案,在 IntelliJ 開啟它的瞬間就會被視為 JSON——編輯器視窗底部的狀態列會將 JSON 顯示為該檔案的語言,而 Reformat Code 則會採用在 Settings → Editor → Code Style → JSON(macOS 為 IntelliJ IDEA → Settings)下所設定的 JSON 程式碼風格規則。此快捷鍵在所有 JetBrains IDE 中皆一致:在 Windows 與 Linux 為 Ctrl+Alt+L,在 macOS 為 Cmd+Option+L

若要重新格式化整個檔案,請將游標置於檔案內任何位置,然後按下快捷鍵。若只想格式化一段文字區塊——例如貼到 Java 原始檔內的 JSON 字串——請先選取該段文字,再按下快捷鍵;IntelliJ 會偵測選取範圍內的 JSON 語法並套用對應規則。若想在套用前預覽將套用哪些規則,請在 Windows/Linux 按下 Ctrl+Alt+Shift+L,或在 macOS 按下 Cmd+Shift+Option+L,以開啟 Reformat Code 對話框。在該對話框中,您可以將動作限制在目前檔案、選取範圍、目錄或整個專案,並切換「Optimize imports」與「Rearrange code」等選項。

臨時檔案(Scratch files)是在不污染專案的情況下格式化原始 JSON 最乾淨的場所。請在 Windows/Linux 按下 Ctrl+Shift+Alt+Insert,或在 macOS 按下 Cmd+Shift+Option+Insert,從語言清單中選擇 JSON,為其命名,然後貼上您的 JSON。Reformat Code 在臨時檔案中的運作方式與專案檔案完全相同,且該臨時緩衝區僅存在於您的 IDE 本機,因此資料絕不會接觸到遠端伺服器。至於壓縮(minify),以及需要產生指向 JSON 錯誤所在行列位置的錯誤報告,單靠 IntelliJ IDE 並非合適的工具——IntelliJ 會以紅色波浪線搭配工具提示在 .json 檔案中標示語法錯誤,但並不會產生一個可直接複製的單一定位資訊,也沒有內建的壓縮動作。這時,基於瀏覽器的格式化工具便能補上這些缺口。

當 IntelliJ IDE 本身力有未逮時

在處理 JSON 時,有三項常見工作僅靠 IntelliJ 內建工具只能部分完成。壓縮(Minifying)——移除所有位元組的空白以產生最小的有效酬載——在專用工具中可一鍵完成,但在 IDE 內則需手動編輯。帶精確定位的驗證在大多數除錯情境中比格式化更為重要,而 IntelliJ 的紅色波浪線工具提示雖會指出有問題的 token,但無法提供可貼到聊天室或錯誤報告中的「X 行第 Y 欄」座標。格式化無法在 IDE 中開啟的 JSON——例如從瀏覽器開發者工具分頁中擷取的 curl 回應,或由第三方 API 提供的設定 blob——在 IDE 中處理起來格外彆扭,因為根本沒有檔案可供附加。

基於瀏覽器的 JSON Formatter 恰好能在上述三種情境中補足 IDE 工作流程:它能以指定的縮排美化、以單行壓縮,並依標準進行驗證並回報行列錯誤——全部透過瀏覽器的原生 JavaScript 引擎執行,因此資料不會離開頁面。

在瀏器中格式化、壓縮或驗證 JSON

  1. 在瀏覽器中開啟 JSON Formatter。
  2. 將您的 JSON 貼上或輸入到左側的輸入框。
  3. 挑選縮排樣式——2 個空格、4 個空格或 Tab——以符合您專案的程式碼風格,然後點擊 Format,即可加入換行與對應縮排來美化文件。
  4. 當您需要用於網路傳輸、嵌入 URL 或儲存至資料庫欄位的最小有效酬載時,請改點 Minify
  5. 若 JSON 無效,請讀取錯誤訊息中顯示的行與欄,並跳至輸入中對應位置進行修正;若 JSON 解析成功,請點擊 Copy 將格式化或壓縮後的結果複製到剪貼簿。

由於這兩項操作皆透過瀏覽器原生的 JSON.parseJSON.stringify 來回轉換,因此輸出為符合標準的正規 JSON——結構與數值皆完整保留,僅空白字元有所更動。對一個典型的 API 回應而言,貼上再格式化的過程所耗時間,與開啟臨時檔案並在 IDE 中按下 Ctrl+Alt+L 差不多,但額外的好處是當解析失敗時,能取得精確的錯誤座標。

驗證器能抓到的問題——以及原因

一份「看起來沒問題」的 JSON 文件卻拒絕被解析,最常見的原因是 JavaScript 物件實字與 JSON 規格之間的語法差異。瀏覽器格式化工具會以清楚的錯誤訊息搭配行列號呈現這些問題,比在 IDE 中著眼盯紅色波浪線要來得快。

語法結構在 JSON 中是否有效?在 JavaScript 中是否有效?驗證器回報內容
以雙引號包裹的鍵與字串值無錯誤
以單引號包裹的鍵或字串值Unexpected token 或無效字串
最後一個陣列項目或物件屬性後的尾端逗號Unexpected token(通常是 } 或 ])
未加引號的物件鍵(例如 {name: "x"})Unexpected token
註解(// 或 /* */)Unexpected token 或無效字元
undefined、NaN、InfinityUnexpected token
大於 9,007,199,254,740,991 的整數來回轉換後會喪失精度來回轉換後會喪失精度無錯誤,但數值會改變——請保留為字串

最後一列是較為細微的部分。JSON 數字在瀏覽器中會以 IEEE-754 倍精度浮點數解析,這與 JavaScript 使用的數值類型相同,因此任何超過 Number.MAX_SAFE_INTEGER(2^53 − 1,亦即 9,007,199,254,740,991)的整數,在驗證器與 IDE 中皆會喪失精度:一個像 12345678901234567890 的數值會變成 12345678901234567000。若您的 JSON 帶有 Twitter/X 的 snowflake ID、64 位元資料庫鍵,或任何需要精確整數保真度的識別碼,請將這些值保留為帶引號的字串,並讓消費端的程式碼使用大整數函式庫來解析。

美化或壓縮——選擇正確的操作

美化(pretty-print)是您在除錯時會優先採用的動作。將一段 5,000 字元的單行回應加上換行與縮排後,立刻就變得可供瀏覽,而 IntelliJ 的 Reformat Code 正是對 IDE 內的檔案執行此動作。壓縮則恰好相反:它會移除所有空格與換行以產生最小的有效酬載,這在網路傳輸、將 JSON 嵌入 URL 查詢字串,或將文件儲存至每個位元組都斤斤計較的資料庫欄位時,正是您所需要的。在大型 API 回應中,移除縮排可在壓縮前大幅縮減酬載大小——具體節省幅度取決於巢狀深度與傳輸方式,因此當大小至關重要時,請以真實樣本進行測試。瀏器格式化工具能以單一點擊處理這兩種操作,因此一般工作流程是先美化(以便閱讀與修正),再將修正後的版本進行壓縮(以便交付)。

瀏器端處理與其遵循的標準

瀏覽器格式化工具的所有運作皆在使用者端進行。解析與序列化採用 JavaScript 引擎原生的 JSON.parseJSON.stringify,符合 RFC 8259——The JavaScript Object Notation (JSON) Data Interchange Format 及其等效的 ECMA-404 標準。您的 JSON 從不離開頁面,因此無論是 API 回應、存取權杖或私密的設定 blob,皆可安心格式化而無需上傳至後端——這與那些會將您的資料以 POST 送至遠端端點的工具截然不同。相同的特性在 IntelliJ IDEA 內部的臨時檔案與本機專案中亦成立:不論是 IDE 或瀏器工具,都不會將您的資料傳送到任何外部位置進行處理。

典型的工作流程會結合這兩種工具:從瀏覽器開發者工具分頁中將 curl 回應貼到瀏覽器格式化工具以進行美化與驗證,再將清理後的版本複製到 IntelliJ 臨時檔案中進行編輯,最後在臨時檔案上使用 Reformat Code,再將最終格式貼回真正的專案原始檔。IDE 負責處理符合專案風格的格式化與即時錯誤波浪線;瀏覽器則負責處理壓縮、附精確行列座標的驗證,以及任何根本無法載入 IDE 的 JSON。

若您正在權衡選項,How to Compress a JSON File Safely in Your Browser 一文對此有詳細說明。

若您正在權衡選項,Create JSON Schema in Python From a JSON Sample 一文對此有詳細說明。