Sublime Text 沒有內建一鍵 JSON 格式化功能,因此在 Sublime 中格式化 JSON 意味著必須安裝外掛,例如 Pretty JSON 或 JSON Reindent — 並且得接受編輯器擴充功能所帶來的取捨、快捷鍵衝突,以及對無效輸入的靜默接受。Sublime Text 內建了 JSON 語法高亮和語法檢查器,可以標記明顯的問題,但當你貼上經過壓縮的 API 回應時,一切就只能靠自己:找外掛、設定快捷鍵,並相信格式化步驟同時也會驗證結構。Pretty JSON(在 Windows 與 Linux 預設為 Ctrl+Alt+J,在 macOS 為 Cmd+Alt+J)可以重新縮排、驗證並摺疊程式碼;JSON Reindent 只重新縮排而不驗證,速度較快但會靜默保留錯誤的 JSON;HTML-CSS-JS Prettify 封裝了 js-beautify 引擎,當你把它的 json 旗標設為 true 時就能處理 JSON。這些外掛在完整設定的 Sublime 安裝環境中都能運作,但它們全都預設輸入已是合法的 UTF-8 JSON、把錯誤藏在籠統的「parse failed」訊息背後,並且在註解、尾端逗號或單引號字串一出現時就立刻崩潰。這個缺口正好是瀏覽器端工具(結合格式化、壓縮以及行列錯誤回報)能成為更安全備案之處。

how to format json in sublime
在 Sublime Text 中格式化 JSON:外掛與更多做法

Sublime Text 實際為 JSON 提供了什麼

Sublime Text 開箱即用會辨識 .json 副檔名並套用 JSON 語法,這帶來語法高亮與儲存時的基本語法檢查。並沒有選單指令、預設快捷鍵、或設定檔選項可以美化 JSON 文件。最接近的內建功能是位於 Edit → Line → Reindent 下的 Reindent 命令,它會依據目前檔案的 tab 寬度調整縮排,但不做解析 — 它會毫不在意地對字串、註解和損壞的結構一視同仁地重新縮排。

如果你開啟的檔案 Sublime 無法辨識為 JSON(例如複製貼上到新分頁的內容通常會被當作「Plain Text」),格式化外掛指令會拒絕執行。解決方法是點擊右下角狀態列的語言標籤,並明確切換到 JSON。這是第一個陷阱:使用者貼上內容、按快捷鍵、看到沒反應,便以為外掛壞了,但其實是語法模式不對。

值得安裝的 Sublime JSON 外掛

三個外掛幾乎能涵蓋所有 Sublime 上的 JSON 工作流程。可依你是否也需要驗證功能來挑選。

外掛會驗證 JSON 嗎?預設快捷鍵最適合情境
Pretty JSON會(解析錯誤時跳出對話框)Ctrl+Alt+J / Cmd+Alt+J日常重新格式化你信任的檔案
JSON Reindent不會 — 僅重新縮排通常未綁定或 Ctrl+Shift+J針對已驗證過的資料追求速度
HTML-CSS-JS Prettify會(透過 js-beautify)Ctrl+Shift+H同時會碰 JS、CSS 與 HTML 的專案

透過 Preferences → Package Control → Install Package 安裝任一外掛,再以名稱搜尋。Pretty JSON 是最受歡迎的選擇,因為它把美化、驗證與摺疊合併為同一個快捷鍵。JSON Reindent 是輕量級替代方案,適用於你已透過其他工具驗證過資料的情境 — 例如已在命令列執行過 python -m json.tool yourfile.json 之後。HTML-CSS-JS Prettify 需要在外掛偏好設定中把 json 設定切換為 true,才會處理 JSON 檔;否則會靜默跳過。

外掛式格式化的限制與陷阱

外掛式格式化有三種反覆出現的失敗模式,容易被忽略,直到它真正咬你一口。

  • 快捷鍵衝突。Pretty JSON 預設的 Ctrl+Alt+J 在某些平台上會與 Sublime 內建的綁定或其他外掛重疊。當快捷鍵失效時,解決方法是打開 Preferences → Key Bindings,將它重新綁定為類似 Ctrl+Alt+F 或 Ctrl+Shift+I 的組合。
  • 靜默接受錯誤的 JSON。JSON Reindent 不做解析 — 它只調整空白。如果你餵給它的字串含有尾端逗號,它會回傳看似格式化、實際上仍然無效的文字。Pretty JSON 會在解析錯誤時跳出對話框,較有幫助,但對話框文字簡短且缺少行列號碼。
  • 編碼假設。Pretty JSON 與 HTML-CSS-JS Prettify 都預設文件是 UTF-8。以位元組順序記號(BOM)或其他編碼儲存的檔案,可能會產生奇怪的縮排、亂碼,或是直接硬性解析失敗,卻沒有清楚指出問題位元組的位置。

在乾淨、設定良好的工作站上,這些都不是致命缺陷,但它們說明了為何純粹依賴 Sublime 的工作流程有時會顯得脆弱,特別是在借用別人的機器、CI 環境,或把 JSON 文件交給設定與你不同的同事時。

使用 JSON Formatter 在瀏覽器中格式化 JSON

當編輯器這條路行不通時,最快且可靠的選擇就是使用瀏覽器端的 JSON Formatter,它能在同一個流程中完成格式化、壓縮與驗證 — 並在出錯時回報精確的行列位置。

  1. 把你的 JSON 貼上或輸入到輸入框中。
  2. 選擇縮排風格(2 個空格、4 個空格或 Tab),然後點擊 Format 來美化 — 或點擊 Minify 將其壓縮為單行。
  3. 如果 JSON 不合法,請讀取錯誤訊息中顯示的行列位置,回到編輯器修正;若無錯誤,則使用 Copy 按鈕複製格式化或壓縮後的結果。

由於此工具使用瀏覽器原生 JSON 解析器與序列化器,輸出的是規範化且能無損往返的 JSON — 僅空白字元會改變。壓縮會移除所有空白與換行,使資料量盡可能小以便網路傳輸或儲存;格式化則還原換行與縮排,使巢狀物件與陣列變得可讀。一切都在本機完成:JSON 從不離開頁面,因此可以放心地用於格式化 API 回應、存取權杖或私人設定,無需將資料上傳到後端。

為什麼 JSON 會驗證失敗(以及如何修正)

JSON 已標準化為 RFC 8259 與 ECMA-404,在幾個常見的地方比 JavaScript 物件實字更為嚴格。大多數「為什麼無法解析」的瞬間都會追溯到下列其中一項。

錯誤看起來像 JavaScript 嗎?在 JSON 中是否合法?
最後一個項目之後的尾端逗號像不合法
使用單引號的字串或鍵像不合法 — JSON 必須使用雙引號
未加引號的物件鍵像不合法 — 鍵必須是帶引號的字串
註解(// 或 /* */)像不合法 — JSON 不允許註解
undefined、NaN、Infinity、Date像不合法 — 僅存在六種值的類型

瀏覽器內的格式化工具會以精確的行列位置指出第一個錯誤位置,讓原本十五分鐘的除錯變成兩秒鐘的修正。一個值得特別提出的微妙限制並非格式化工具的錯誤,而是 JavaScript 本身的特性:整數會被解析為 IEEE-754 雙精度浮點數,因此任何大於 9,007,199,254,740,991(Number.MAX_SAFE_INTEGER)的值都會喪失精確度。像 12345678901234567890 這樣的雪花 ID 會被回傳為 12345678901234567000。如果你需要精確的大整數 — Twitter/X 的 ID、64 位元的資料庫鍵、或是超過九千兆的發票號碼 — 請在 JSON 中將它們保存為字串而非裸數字。

Sublime JSON 任務的實用工作流程

誠實的答案是兩個都用。在 80% 已經合法、只是想存檔前整理一下的情境下,保留一個安裝在 Sublime 中的 JSON 外掛;當某段資料無法解析、編碼看起來可疑,或是在推送到伺服器前需要壓縮時,就在瀏覽器分頁中打開 JSON Formatter。由於這個格式化工具是無狀態且在本機執行,因此能在鎖定限制的機器、來賓帳號,以及無法安裝 Sublime 外掛的 CI runner 上運作。

在除錯時,格式化是你會首先求助的工具 — 一段 5,000 字元的單行回應一旦經過美化,就會變成可瀏覽的樹狀結構。在發佈時,壓縮不僅僅是美觀:在 gzip 壓縮之前去除縮排,可以縮小典型 API 負載的體積,這在行動裝置用戶端與計量連線上特別重要。這兩個方向都會透過同一個引擎往返,因此結構化資料會被精確保留,只有空白字元會改變。

常見的日常用途包括除錯 API 回應、整理像 package.json 或 tsconfig.json 之類的設定檔、在儲存前縮小資料量,以及單純地檢查某個 blob 是否為合法 JSON,再將它餵給程式碼。把瀏覽器內的格式化工具作為備案,意謂著在 Sublime 卡住時,你仍能在大約貼上、點擊、複製所需的時間內完成任務。