alltools.one
JSON
2025-06-17
6 min
alltools.one Team
JSONEditorProductivityDeveloper ToolsTips

JSON 編輯器技巧:更快速地處理大型文件

在現代開發中,處理 JSON 是不可避免的。API 回應、設定檔、資料庫匯出——JSON 無處不在。當檔案達到數千行時,高效的編輯工具和技術能讓工作時間從數小時縮短到數分鐘。

格式化與可讀性

自動格式化

處理任何大型 JSON 文件的第一步是格式化。壓縮過的 JSON 無法閱讀:

{"users":[{"id":1,"name":"Alice","roles":["admin","editor"]},{"id":2,"name":"Bob","roles":["viewer"]}]}

格式化後:

{
  "users": [
    {
      "id": 1,
      "name": "Alice",
      "roles": ["admin", "editor"]
    },
    {
      "id": 2,
      "name": "Bob",
      "roles": ["viewer"]
    }
  ]
}

使用我們的 JSON 格式化工具立即格式化 JSON——貼上、格式化、複製。

命令列格式化

# jq - the standard
cat data.json | jq .

# Python (built-in)
python3 -m json.tool data.json

# Node.js
node -e "process.stdout.write(JSON.stringify(JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')),null,2))" < data.json

導航技術

樹狀檢視 vs 文字檢視

對於超過 1000 行的文件,樹狀檢視比文字編輯更實用:

  • 摺疊/展開節點以聚焦在相關區段
  • 階層導航顯示你在結構中的位置
  • 在子樹中搜尋以過濾雜訊

使用 JSONPath 進行目標存取

不必在數千行中捲動,使用 JSONPath 直接跳到你需要的資料:

# Get the third user's email
cat users.json | jq '.[2].email'

# Get all admin users
cat users.json | jq '.[] | select(.role == "admin")'

在我們的 JSONPath 查詢指南中了解更多。

驗證

捕捉語法錯誤

常見的 JSON 語法錯誤:

  • 尾隨逗號{"a": 1, "b": 2,} ——不允許
  • 單引號{'key': 'value'} ——必須使用雙引號
  • 未加引號的鍵{key: "value"} ——鍵必須加引號
  • 註解// this breaks ——JSON 沒有註解語法

大多數編輯器會即時標示這些錯誤。如需快速驗證,我們的 JSON 驗證器能精確定位錯誤的位置。

結構描述驗證

除了語法之外,驗證你的 JSON 是否符合預期的結構:

# Using ajv-cli
npx ajv validate -s schema.json -d data.json

請參閱我們的 JSON Schema 驗證指南以獲得完整的說明。

操作技術

排序鍵

一致的鍵排序讓差異比較更乾淨:

jq -S . data.json > sorted.json

提取子集

只取出你需要的欄位:

# Extract specific fields from each object
jq '[.[] | {name, email}]' users.json

# Filter by condition
jq '[.[] | select(.age > 30)]' users.json

合併 JSON 檔案

# Merge two objects
jq -s '.[0] * .[1]' base.json override.json

# Concatenate arrays
jq -s '.[0] + .[1]' list1.json list2.json

轉換結構

# Create a lookup map from an array
jq 'INDEX(.[]; .id)' users.json
# Result: {"1": {"id": 1, "name": "Alice"}, "2": {"id": 2, "name": "Bob"}}

# Flatten nested structure
jq '[.departments[].employees[]]' org.json

處理大型檔案

串流解析

對於數 GB 的檔案,串流方式可以避免將所有資料載入記憶體:

# jq streaming mode
jq --stream 'select(.[0][-1] == "email") | .[1]' large.json

# Python streaming
import ijson
for item in ijson.items(open('large.json'), 'item'):
    process(item)

分割與處理

# Split a large array into individual files
jq -c '.[]' large_array.json | split -l 1000 - chunk_

# Process chunks in parallel
ls chunk_* | parallel jq '.name' {}

編輯器特定技巧

VS Code

  • 格式化Shift+Alt+F(或 Cmd+Shift+P → "Format Document")
  • 摺疊:點擊邊欄的箭頭來摺疊區段
  • JSON Schema:添加 "$schema" 以獲得自動補全
  • 設定"editor.formatOnSave": true 用於 JSON 檔案

JetBrains IDE

  • 結構檢視Alt+7 顯示 JSON 樹狀結構
  • 導航Ctrl+Click 點擊 $ref 以追蹤引用
  • 格式化Ctrl+Alt+L 重新格式化

常見問題

在終端機中編輯 JSON 的最佳方式是什麼?

對於快速編輯,jq 無可比擬——它可以在一個命令中查詢、篩選和轉換 JSON。對於互動式編輯,fx(npm 套件)提供了帶有語法標示和摺疊功能的終端機 JSON 瀏覽器。對於簡單的格式化,python3 -m json.tool 無需額外的相依套件即可使用。

我如何處理帶有註解的 JSON(JSONC)?

帶有註解的 JSON(用於 VS Code 設定、TypeScript 設定)不是有效的 JSON。strip-json-comments 等工具可以在解析前移除註解。在 VS Code 中,將檔案關聯設定為 "JSON with Comments" 以獲得正確的語法標示。

相關資源

Published on 2025-06-17
JSON Editor Tips: Work Faster with Large Documents | alltools.one