跳至主要內容
FreeOnlineTools Go
繁體中文
解釋

JSON 格式化最佳實務:易讀、有效且高效

作者:FreeOnlineTools Team · 更新日期:2026-08-28

快速解答

使用 2 個空格縮排以實現人類可讀的 JSON,無尾隨逗號、雙引號鍵和一致的鍵順序(按字母順序或域含義)。縮小 JSON 用於生產傳輸,並漂亮列印用於開發。使用我們免費的 JSON 格式化程式可立即在兩者之間切換。

介紹

JSON 格式選擇會影響可讀性、檔案大小和偵錯速度。雖然 JSON 語法是由 RFC 8259 嚴格定義的,但如何縮排、排序鍵和處理空格是一個約定問題。本指南解釋了廣泛採用的最佳實踐,以便您的 JSON 在團隊之間保持一致、易於調試且在線高效。

步步

  1. 選擇縮排寬度

    2 個空格是最常見的約定(Prettier、ESLint、Google JSON 樣式指南)。對於深度嵌套的配置來說,4 個空格是可以接受的。不鼓勵使用選項卡,因為不同編輯器的渲染效果不同。選擇一個並在整個專案範圍內強制執行。

  2. 一致地訂購密鑰

    要么按字母順序對鍵進行排序以獲得確定性輸出(對於緩存和差異很有用),要么按域含義進行分組(首先是 id,然後是屬性,然後是關係)。避免隨機密鑰順序 - 它會使差異變得嘈雜並破壞快照測試。

  3. 縮小生產運輸

    縮小 JSON 刪除所有非必要的空白,將有效負載大小減少 10-0%。在生產中提供來自 APIs 的縮小版 JSON,並保留列印精美的 JSON 僅用於本地開發和調試。

  4. 發送前驗證

    在傳送至 API 或寫入設定檔之前,請務必透過驗證器執行 JSON。單一尾隨逗號或不帶引號的鍵將導致 JSON.parse() 拋出並破壞消費者。

  5. 使用格式化程式切換模式

    將 JSON 貼到 JSON 格式化程式中,以美化讀取或縮小以便傳輸。該工具驗證語法並報告任何錯誤的確切位置,從而節省偵錯時間。

範例

印刷精美(2 個空格縮排)

輸入: {"id":1,"name":"Alice","active":true}

輸出: { "id": 1, "name": "Alice", "active": true }

縮小生產規模

輸入: { "id": 1, "name": "Alice" }

輸出: {"id":1,"name":"Alice"}

按字母順序排序的鍵

輸入: {"zebra":1,"apple":2,"mango":3}

輸出: {"apple":2,"mango":3,"zebra":1}

常見問題

  • 尾隨逗號:{"a":1,} 無效 JSON。大多數格式化程式都會刪除它們,但像 JSON.parse() 這樣的嚴格解析器將拒絕輸入。
  • 單引號和不帶引號的鍵:{'a':1} 和 {a:1} 是有效的 JavaScript,但 JSON 無效。始終對鍵和字串值使用雙引號。
  • JSON 中的註解:標準 JSON 不允許 // 或 /* */ 註解。如果需要內聯文檔,請使用 JSONC、JSON5 或單獨的架構文件。
  • 混合縮排:混合製表符和空格會破壞 diff 工具,並可能導致「縮排不一致」lint 錯誤。在提交之前使用格式化程序進行標準化。

提示

  • 將編輯器配置為在儲存時使用 2 個空格縮排格式化 JSON — 這可以防止程式碼審查中的樣式爭論。
  • 對於 API 回應,設定 Content-Type: application/json; charset=utf-8 並透過 gzip/Brotli 壓縮提供縮小的 JSON 服務,以實現最大效率。
  • 在快照測試中對 JSON 進行散列或比較時,使用確定性鍵排序(例如按字母順序)-隨機順序會導致誤報失敗。
  • 當調試大型 JSON 有效負載時,首先對其進行漂亮列印,然後使用正規表示式或 jq 提取相關子樹,而不是透過肉眼掃描。

相關工具

相關指南

參考