JSON 美化列印:如何格式化 JSON 以提高可讀性
什麼是 JSON 美化列印?
JSON 美化列印是將原始、緊湊(壓縮)的 JSON 資料重新格式化,加入適當的縮排、換行和空格,使其易於人類閱讀的過程。美化列印後的 JSON 文件使用一致的縮排和清晰的結構格式,展現巢狀物件和陣列的層次結構。
比較以下兩種相同資料的表示方式:
壓縮格式(難以閱讀):
{"users":[{"id":1,"name":"Alice","roles":["admin","editor"]},{"id":2,"name":"Bob","roles":["viewer"]}],"total":2}
美化列印格式(易於閱讀):
{
"users": [
{
"id": 1,
"name": "Alice",
"roles": ["admin", "editor"]
},
{
"id": 2,
"name": "Bob",
"roles": ["viewer"]
}
],
"total": 2
}
美化列印 vs 壓縮 JSON
選擇美化列印還是壓縮 JSON 取決於使用場景:
| 方面 | 美化列印 | 壓縮格式 | |--------|-------------|----------| | 可讀性 | 高——結構清晰 | 低——所有資料在一行 | | 檔案大小 | 較大(更多空格) | 較小(無空格開銷) | | 網路傳輸 | 大型資料傳輸較慢 | 更快、頻寬更少 | | 除錯 | 開發時理想 | 無法實際檢查 | | 生產環境使用 | 很少使用 | API 回應的標準做法 |
生產環境的 API 通常提供壓縮 JSON 以減少頻寬,而開發者在開發和除錯期間使用美化列印 JSON。
縮排風格
大多數格式化工具支援兩種常見的縮排風格:
2 空格縮排(最常見)
{
"name": "Alice",
"age": 30,
"address": {
"city": "New York"
}
}
推薦用於: JavaScript/TypeScript 專案、現代 Web 開發和大多數通用場景。
4 空格縮排
{
"name": "Alice",
"age": 30,
"address": {
"city": "New York"
}
}
推薦用於: Python 專案(PEP 8 風格)和偏好較寬縮排以提高清晰度的團隊。
Tab 縮排
有些開發者偏好基於 Tab 的縮排,特別是在以無障礙為重點的工作流程中,使用者可以在編輯器中調整 Tab 寬度。
選擇合適的縮排
大多數團隊標準化使用 2 空格,因為它在可讀性和水平空間效率之間取得了平衡。JavaScript 生態系統(Node.js、React、Vue)絕大多數使用 2 空格縮排。如果你在 Python 密集型環境中工作,4 空格縮排可能感覺更自然。關鍵是一致性——選擇一種風格並使用 Prettier 或 EditorConfig 等工具在整個專案中強制執行。
不同程式語言中的 JSON 美化列印
JavaScript / Node.js
const formatted = JSON.stringify(data, null, 2);
console.log(formatted);
Python
import json
formatted = json.dumps(data, indent=2)
print(formatted)
Java
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
String formatted = mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(data);
Go
import "encoding/json"
formatted, _ := json.MarshalIndent(data, "", " ")
fmt.Println(string(formatted))
Ruby
require 'json'
puts JSON.pretty_generate(data)
如何美化列印 JSON
使用線上 JSON 格式化工具
最快的方法是使用免費的線上 JSON 格式化工具——貼上你的 JSON,即可獲得即時、格式化的輸出,並附帶語法突顯和錯誤偵測。
使用命令列工具
使用 jq(最受歡迎):
cat file.json | jq .
使用 Python:
python -m json.tool file.json
使用 Node.js:
node -e "const d = require('./file.json'); console.log(JSON.stringify(d, null, 2));"
瀏覽器開發者工具
所有主流瀏覽器都會在其網路(Network)標籤中自動格式化 JSON 回應:
- Chrome DevTools:網路標籤自動美化列印 JSON 回應
- Firefox Developer Tools:JSON 回應以可折疊的樹狀檢視顯示
- Safari Web Inspector:JSON 預覽包含自動格式化
JSON 格式化的 IDE 外掛
VS Code
VS Code 擁有出色的內建 JSON 支援。使用 Shift+Alt+F(Windows/Linux)或 Shift+Option+F(macOS)來格式化任何 JSON 檔案。其他擴充功能可增強使用體驗:
- Prettier:一致地格式化 JSON、JSONC 和許多其他語言
- JSON Tools:使用鍵盤快速鍵排序、壓縮和格式化 JSON
- JavaScript Booster:進階 JSON 操作功能
JetBrains IDE(IntelliJ、WebStorm、PyCharm)
- 內建格式化工具:
Ctrl+Alt+L(Windows/Linux)或Cmd+Option+L(macOS) - 貼上時自動進行 JSON 驗證和格式化
Vim / Neovim
" 原地格式化 JSON
:%!jq .
進階 JSON 格式化選項
現代 JSON 格式化工具提供的不僅僅是基本縮排:
- 鍵值排序:按字母順序排列物件鍵名,確保輸出一致
- 語法突顯:以不同顏色標示鍵名、字串、數字和布林值
- 可折疊樹狀結構:展開和折疊巢狀結構,方便導航
- 行號:在除錯時參考特定位置
- 錯誤突顯:以視覺化方式標記語法錯誤並附帶詳細訊息
JSON 可讀性的最佳實踐
- 格式化前務必驗證:格式化工具無法修復無效的 JSON。先使用 JSON 驗證器捕捉語法錯誤。
- 設定團隊標準:就縮排達成一致(2 空格是行業標準),並使用 Prettier 或 linter 強制執行。
- 保持巢狀層級淺:無論格式化得多好,深度巢狀的 JSON(4 層以上)都難以閱讀。在可能的情況下考慮重新組織結構。
- 使用有意義的鍵名:描述性、簡潔的鍵名比任何格式化工具更能提高可讀性。
- 新增結尾換行:以換行字元結束 JSON 檔案,以符合 POSIX 標準並避免 diff 噪音。
試用我們的免費線上 JSON 美化列印工具立即格式化和美化你的 JSON 資料,享受可自訂的縮排和語法突顯。