JSON 格式化與驗證完全指南:從入門到排錯實戰
JSON 是什麼?為什麼格式化如此重要?
JSON(JavaScript Object Notation)是現代資料交換的標準格式,幾乎無處不在:
- API 回應:絕大多數 Web API 回傳 JSON
- 設定檔:package.json、tsconfig.json 等
- 資料儲存:NoSQL 資料庫、本機儲存
- 訊息傳遞:微服務間通訊
但原始 JSON 往往是壓縮在一行的,可讀性極差:
{"name":"張三","age":28,"address":{"city":"台北","district":"信義"},"skills":["JavaScript","TypeScript","React"],"projects":[{"name":"工具庫","url":"https://www.toolsku.com"}]}
格式化後清晰可讀:
{
"name": "張三",
"age": 28,
"address": {
"city": "台北",
"district": "信義"
},
"skills": [
"JavaScript",
"TypeScript",
"React"
],
"projects": [
{
"name": "工具庫",
"url": "https://www.toolsku.com"
}
]
}
使用工具庫格式化 JSON
基本操作
- 開啟 JSON 格式化工具
- 貼上或輸入 JSON 文字
- 自動格式化並顯示結果
- 如有語法錯誤,會標註錯誤位置與原因
進階功能
- 縮排設定:2 空格、4 空格或 Tab 縮排
- 排序鍵名:按鍵名字母排序,方便比對
- 壓縮/美化切換:一鍵在壓縮和美化間切換
- 語法高亮:不同類型值用不同顏色顯示
常見 JSON 錯誤及排查
錯誤 1:尾逗號(Trailing Comma)
{
"name": "張三",
"age": 28, ← 這裡多了逗號
}
修復:刪除最後一個屬性後的逗號。標準 JSON 不允許尾逗號。
錯誤 2:單引號代替雙引號
{
'name': '張三' ← JSON 必須用雙引號
}
修復:所有字串用雙引號包裹。
錯誤 3:註解
{
// 這是註解 ← JSON 不支援註解
"name": "張三"
}
修復:刪除註解,或使用 JSONC 格式(VS Code 支援)。工具庫的格式化工具會自動忽略註解。
錯誤 4:未跳脫的特殊字元
{
"text": "第一行
第二行" ← 換行符必須跳脫為 \n
}
修復:換行用 \n,定位字元用 \t,反斜線用 \\。
錯誤 5:非字串鍵名
{
name: "張三" ← 鍵名必須用雙引號包裹
}
修復:鍵名加雙引號:"name": "張三"。
JSON 與其他格式互轉
JSON ↔ YAML
YAML 更適合人類編寫設定檔,JSON 更適合機器解析:
# YAML 格式
name: 張三
age: 28
skills:
- JavaScript
- TypeScript
使用 JSON 與 YAML 互轉工具 一鍵轉換。
JSON ↔ TOML
TOML 是 Rust 生態常用的設定格式:
# TOML 格式
name = "張三"
age = 28
skills = ["JavaScript", "TypeScript"]
使用 JSON 與 TOML 互轉工具 一鍵轉換。
JSON ↔ CSV
適合將 API 回傳的 JSON 資料轉為表格格式:
使用 JSON 與 CSV 互轉工具 一鍵轉換。
JSON 進階操作
JSONPath 查詢
從複雜 JSON 中提取特定資料:
JSON: { "users": [{"name": "張三", "age": 28}, {"name": "李四", "age": 32}] }
JSONPath: $.users[?(@.age > 30)].name
結果: ["李四"]
使用 JSONPath 查詢工具 執行查詢。
JSON Diff 對比
對比兩個 JSON 的差異,適合:
- 對比 API 請求和回應
- 檢查設定變更
- 測試資料對比
使用 JSON 對比工具 視覺化差異。
JSON 產生程式碼類型
從 JSON 自動產生 TypeScript/Go/Java/SQL 類型定義:
{ "name": "張三", "age": 28 }
產生 TypeScript:
interface Root {
name: string;
age: number;
}
使用 JSON 轉 TypeScript 工具、JSON 轉 Go 工具 等。
常見問題
JSON 檔案太大無法格式化?
工具庫的 JSON 格式化在瀏覽器本機執行,不受伺服器限制。即使幾十 MB 的 JSON 檔案也能處理。
如何驗證 JSON 是否符合特定結構?
先格式化確認語法正確,再使用 JSONPath 查詢驗證關鍵欄位是否存在。
JSON 和 JSON5 有什麼區別?
JSON5 是 JSON 的超集,支援註解、尾逗號、單引號等。工具庫格式化工具相容 JSON5 語法。
總結
JSON 處理是開發者的日常必備技能。工具庫提供完整的 JSON 工具鏈:格式化、YAML 互轉、TOML 互轉、CSV 互轉、JSONPath 查詢、對比、產生類型,全部在瀏覽器本機處理,安全高效。