在 Notepad++ 中格式化 JSON 已不再需要安裝第三方外掛,因為 Notepad++ 內建選單動作和現代化的輔助工具,能在當前緩衝區中解析、美化和壓縮任何 JSON 文件。那套經典作法——透過 Plugin Manager 安裝 JSON Viewer 外掛——在 2019 年 Notepad++ 7.7 淘汰內建的 Plugin Manager 清單後就失效了,讓 JSON Viewer 和 JSTool 只能透過手動下載取得,結果經常無法在 64 位元版本上載入,也很少會跟著編輯器一起更新。如今最可靠的做法是一種混合方式:讓 Notepad++ 負責編輯和語法高亮,但在需要美化、壓縮或找出漏掉的那個逗號時,把 JSON 交給瀏覽器型的格式化工具。JSON Formatter 正好能完成這些工作——不需安裝、不需重新啟動、不需更新外掛——而且解析後的 JSON 會留在你的瀏覽器分頁中,不會被送到遠端 API。本指南涵蓋兩種工作流程,讓你依情況選擇最適合的方式:當 JSON 檔案小且格式正確時,使用編輯器內動作;當檔案龐大、引號混亂或頑固地無效時,使用貼上與複製的往返流程。

how to format json in notepad++
在 Notepad++ 中格式化 JSON 而無需外掛

為什麼 Notepad++ 外掛做法不再有效

在 Notepad++ 的大部分歷史中,「如何在 Notepad++ 中格式化 JSON」只有一個答案:開啟 Plugins → Plugin Manager → Show Plugin Manager,安裝 JSON Viewer,重新啟動,然後點選 Plugins → JSON Viewer → Format JSON。在那套流程成為肌肉記憶後的兩個版本,編輯器的維護者在 Notepad++ 7.7 中淘汰了 Plugin Manager 清單,以對抗夾帶惡意程式的外掛鏡像站。JSON Viewer 和 JSTool 外掛在 GitHub 上仍然存在,但現在安裝它們意味著下載 32 位元或 64 位元的 DLL,將其放入 %AppData%\Notepad++\plugins,重新啟動編輯器,並祈禱該 .dll 的 ABI 符合你的版本。對 64 位元的 Notepad++ 體驗而言——自 v8 起已是預設——情況就是外掛複製到正確的資料夾後卻靜默拒絕載入,因為編輯器會記錄「API: Can't load plugin」卻不提供任何升級途徑。若想更深入了解仍可使用的外掛選項,在 Notepad++ 中格式化 JSON 的外掛與替代方案指南涵蓋了目前仍活躍的分支版本。

還有一個不需要任何外掛的替代方案。Notepad++ 內建 JSON 語言定義,提供語法高亮和大括號配對功能,而在有預裝 JSTool 外掛的系統上,選單列也提供 Plugins → JSTool → JSFormat。該動作會對緩衝區執行一次整理,但不會進行驗證,也不會在失敗時回報行號與欄位,而且它把輸入視為 JavaScript 物件字面值,而非較嚴格的 JSON 文法——因此結尾的逗號在 JSFormat 處理後仍會留下,並在下一次 JSON.parse 時中斷。這些正是 JSON Formatter 工具存在的理由,能把這些粗糙的地方清理乾淨。

Notepad++ 內部兩個可靠的替代做法

當 JSON 位於你不想離開的緩衝區中時,兩個編輯器端的做法仍然有效,不需任何第三方外掛。第一個是將 Language 選單設為「JSON」,讓 Notepad++ 套用其 JSON 標記器;這能提供準確的大括號配對、在物件與陣列上的摺疊點,以及字串、數字與未加引號的鍵之間清楚的視覺區分——光是這點就能抓到為數不少的撰寫錯誤。第二個是巨集做法:開啟 Macro → Start Recording,按下 Ctrl+Shift+Home 選取整個緩衝區,在有安裝 JSTool 外掛時執行 Plugins → JSTool → JSFormat,儲存巨集,然後透過 Settings → Shortcut Mapper → Macro commands 將其綁定到 Ctrl+Alt+J,以便一鍵重新格式化。

這兩種做法都合理,但它們都無法告訴你無效的 JSON 文件是哪裡壞了。為此你需要一個真正的解析器。最明確的分工是:在 Notepad++ 中編輯與瀏覽,在專用工具中驗證、美化與壓縮。將緩衝區貼到 JSON Formatter 中,選擇縮排,按下 Format,複製結果,再貼回原始內容上方蓋過。整個往返流程的說明時間比實際操作還長。

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

在任何現代瀏覽器分頁中開啟 JSON Formatter,介面會直接把你帶進一個輸入框——不需要建立專案、不需要 npm install、不需要等待建置步驟。把壓縮過或雜亂的 JSON 轉換成可讀文件的完整瀏覽器內流程如下:

  1. 把你的 JSON 貼上或在 JSON Formatter 頁面上的輸入框中輸入。
  2. 挑選一種縮排風格——2 個空格、4 個空格或一個 tab——使其符合 Notepad++ 緩衝區中周圍程式碼的風格。
  3. 點選 Format 以使用所選縮排美化 JSON,或點選 Minify 將同一份資料壓縮回單行。
  4. 如果輸入無效,請讀取解析器錯誤以及它所指出的行號與欄位;否則點選 Copy,將格式化或壓縮後的結果貼回 Notepad++ 緩衝區。

使用與團隊相同的縮排風格,比聽起來更重要,因為將以 2 個空格美化的 JSON 檔案放進使用 tab 縮排的程式碼庫中,每次儲存都會產生雜訊 diff。該工具會完整保留結構與數值,只更動空白字元。如果你貼上的內容含有 Twitter 風格的 19 位元數字 ID,請在輸入時將該值保留為帶引號的字串——JavaScript 會將任何大於 9,007,199,254,740,991 的整數解析為雙精度浮點數,而格式化工具會忠實呈現該精度損失。

何時格式化、何時壓縮

格式化與壓縮並不能互相取代。它們會產生相同的標準化 JSON,但用途相反,而選擇正確的方式正是讓一段 5,000 字元的記錄行變成可讀樹狀結構的關鍵。

目標動作適用情境
讀取或偵錯承載資料使用 4 個空格縮排格式化檢查 API 回應、追蹤設定問題、檢視同事的 pull request diff
符合專案既有風格使用 2 個空格或 tab 縮排格式化與已使用該縮排的其他原始檔案一同儲存
在傳輸前縮減承載大小壓縮為單行將 JSON 嵌入 URL 片段、儲存在單一 DB 欄位中、發布至 webhook
縮減打包後的靜態資產先壓縮,再交由 gzip 處理傳輸使用計量網路的行動端用戶、以 JSON 作為靜態檔案發送儀表板的場合

僅靠壓縮(去除空白)就能在 HTTP 壓縮接手前帶來可觀的體積縮減;HTTP 壓縮會處理剩下的部分。在 Notepad++ 中進行編輯器內偵錯時,正確的選擇幾乎總是 Format。對於即將離開你機器的承載資料,正確的選擇幾乎總是 Minify。

透過行號與欄位精確定位 JSON 錯誤

對於一份本可用肉眼掃描的文件,格式化工具仍然值得開啟,原因在於它把「我覺得這裡某處有個多餘的逗號」變成了「第 47 行、第 12 欄」。當你對無效輸入按下 Format 時,JSON Formatter 會在第一個語法錯誤處停止解析,並顯示錯誤訊息與精確位置。這個位置讓你能在 Notepad++ 中透過 Ctrl+G → Go to line 直接跳到該處,準備進行修正。

這類工具能抓到的一小撮錯誤,已涵蓋大多數實際情況。在物件或陣列最後一個項目後加上結尾逗號,在 JavaScript 中合法,但在 JSON 中不合法。單引號包起的鍵與值在 Python 與 JavaScript 中合法,在 JSON 中不合法。未加引號的物件鍵在上述兩種語言中都合法,但在 JSON 中不合法。從原始碼複製過來的散落行註解或區塊註解,會讓所有 JSON 解析器失效,因為 JSON 沒有註解語法。這些錯誤一旦由真正的解析器標示出來,而不是靠捲動猜測,每個都是兩秒鐘就能修好的問題。

常絆倒人的 JSON 規則

JSON 是一種比其源自的 JavaScript 物件字面值語法嚴格得多的格式。JSON 資料交換格式,RFC 8259,將文法鎖定為六種數值型別——物件、陣列、字串、數字、布林值與 null——其餘一概禁止。這意味著不能有 undefined、NaN、Infinity、Date 物件或函式。字串必須使用雙引號,且必須跳脫控制字元;整份文件必須是單一的最上層值,這對值組成的陣列或單一物件都能滿足,但對許多解析器而言,單純的裸字串並不符合。

記住這些規則,幾乎能讓所有「為什麼解析不了」的時刻變成快速掃描。剩下的邊界情況落在數字上:JSON 的數字文法沒有上限,但驅動大多數瀏覽器型格式化工具的 JavaScript 引擎是使用 IEEE-754 雙精度浮點數進行解析,任何大於 Number.MAX_SAFE_INTEGER 的整數都會失去精度。如果你的資料綱要包含大型 ID,請在來源 JSON 中將其寫成字串——這個小習慣能避免那種熬過測試、只在正式環境中才會出現的 bug。

工作流程中 Notepad++ 一端仍然很輕量:把檔案留在緩衝區中,透過 JSON Formatter 跑一次 Format,把標準化後的版本貼回來,然後儲存。不需要外掛管理器、不需要處理 DLL、不需要重新啟動編輯器。

如果你正在權衡各種選項,如何在不遺失資料的情況下壓縮 JSON 檔案對此有詳細說明。