JSON 格式化 & 驗證工具 常見問題
Q: 什麼是 JSON 格式化工具?
A: 什麼是 JSON 格式化工具?
JSON 格式化工具是一種將原始、壓縮或格式混亂的 JSON 資料重新格式化,加入適當的縮排、換行和空格,使其易於人類閱讀的工具。大多數 JSON 格式化工具還包含驗證、語法突顯、錯誤偵測等功能,有時還有鍵值排序、壓縮和樹狀檢視導航等附加功能。我們的免費線上 JSON 格式化工具將格式化和驗證整合在一個工具中,為您提供即時、清晰的輸出和詳細的錯誤報告。
Q: 為什麼我的 JSON 無效?
A: 為什麼我的 JSON 無效?
當 JSON 違反 JSON 規範的嚴格規則時,它就是無效的。最常見的原因包括:
- 結尾逗號:物件或陣列中最後一個元素之後多餘的逗號
- 缺少雙引號:物件鍵名或字串值沒有用雙引號包裹
- 使用了單引號:使用單引號而非雙引號(單引號在 JSON 中無效)
- 未轉義的特殊字元:字串中的反斜線或引號未正確轉義
- 無效的值:如
undefined、NaN或Infinity(這些在 JSON 中沒有對應類型) - 括號不匹配:
{/}或[/]沒有正確配對
使用 JSON 驗證器來精確定位語法錯誤的位置和性質。大多數驗證器會報告第一個遇到的錯誤所在的行號、列號以及描述性錯誤訊息。
Q: JSON 和 JavaScript 物件有什麼區別?
A: JSON 和 JavaScript 物件有什麼區別?
雖然 JSON 語法源自 JavaScript 物件字面量語法,但它們並非同一回事。主要區別包括:
- 鍵名必須使用雙引號:JSON 要求
{"key": "value"},而 JavaScript 允許{key: "value"}(不加引號)和{'key': 'value'}(單引號)。 - 字串值必須使用雙引號:JSON 只允許字串使用雙引號。JavaScript 同時接受單引號和雙引號。
- 不允許結尾逗號:JSON 禁止最後一個元素之後出現逗號。JavaScript 則允許。
- 有限的資料類型:JSON 僅支援字串、數字、布林值、null、物件和陣列。JavaScript 物件可以包含函數、
undefined、Date、Map、Set和其他特殊類型。 - 不支援註解:JSON 不支援註解。JavaScript 原始碼中的物件可以有註解。
這意味著你不能簡單地寫一個 JavaScript 物件就稱之為 JSON——它必須透過 JSON.stringify() 序列化,或按照嚴格的 JSON 規則書寫。
Q: JSON 可以有註解嗎?
A: JSON 可以有註解嗎?
不可以,官方 JSON 規範(RFC 8259)不支援註解。JSON 被設計為一種最小化的、語言無關的資料交換格式,故意排除了註解,以保持解析器在不同語言之間的簡單性和一致性。
如果你需要註解,有以下幾種選擇:
- JSONC(帶註解的 JSON):VS Code 和其他工具用於設定檔的格式。JSONC 允許
//行註解和/* */區塊註解。 - YAML 或 TOML:原生支援註解的替代設定檔格式。
- 基於約定的元資料:在 JSON 物件中使用
"_comment"或"//"等鍵名來儲存人類可讀的備註。注意,這會在資料中增加額外的內容。 - 解析前移除註解:在將 JSON 傳遞給嚴格解析器之前,使用預處理步驟移除註解。
Q: 如何在線上驗證 JSON?
A: 如何在線上驗證 JSON?
線上驗證 JSON 非常簡單:
- 複製你的 JSON 資料
- 貼到 JSON 驗證工具中
- 點擊驗證或格式化按鈕
- 工具會回報 JSON 有效,或顯示錯誤及其精確位置和問題描述
一個好的 JSON 驗證器應該:
- 根據官方 JSON 規範(RFC 8259)驗證語法
- 顯示錯誤所在的行號和列號
- 提供描述性錯誤訊息,說明問題所在
- 可選地同時格式化和美化 JSON
- 以不同顏色突顯不同資料類型的語法
對於大型或敏感資料,許多線上驗證器會在瀏覽器中完全以客戶端方式處理,意味著你的資料永遠不會離開你的電腦。
Q: 壓縮 JSON 是什麼意思?
A: 壓縮 JSON 是什麼意思?
壓縮 JSON 是指移除了所有不必要空格的 JSON——空格、製表符、換行符和縮排全部被剝離。結果是單行(或極少行)的緊湊文字:
{"users":[{"id":1,"name":"Alice","roles":["admin"]}],"total":1}
在生產環境中使用壓縮 JSON 有以下幾個原因:
- 較小的檔案大小:可以減少 30-50% 甚至更多的資料量
- 更快的網路傳輸:傳輸的資料越少,延遲越低
- 降低頻寬成本:對於高流量的 API 和行動應用尤其重要
代價是壓縮 JSON 對人類來說基本上無法閱讀。使用 JSON 美化工具將壓縮 JSON 重新格式化為可讀的結構,以便除錯或檢查。
Q: 如何在命令列中美化 JSON?
A: 如何在命令列中美化 JSON?
有幾種命令列工具可以美化 JSON:
使用 jq(最受歡迎,需另外安裝):
cat file.json | jq .
使用 Python(大多數系統內建):
python -m json.tool file.json
使用 Node.js:
node -e "const d = require('./data.json'); console.log(JSON.stringify(d, null, 2));"
使用 curl(美化 API 回應):
curl https://api.example.com/data | jq .
推薦使用 jq 工具,因為它具有彩色輸出、查詢能力和強大的錯誤處理。
Q: 什麼是 JSON Schema?
A: 什麼是 JSON Schema?
JSON Schema 是一種詞彙表,讓你能夠對 JSON 文件進行註解和驗證。它定義了 JSON 文件必須滿足的結構、資料類型和約束條件。可以將其視為 JSON 資料的合約或規範。
JSON Schema 的主要功能:
- 類型驗證:指定值必須是字串、數字、布林值、陣列、物件還是 null
- 必填欄位:將某些屬性標記為強制性的
- 值約束:設定最小值/最大值、字串模式(regex)和允許的值(列舉)
- 陣列驗證:控制陣列長度、元素類型和唯一性
- 巢狀驗證:為巢狀物件和陣列定義 schema
- 條件驗證:根據其他欄位的值應用不同的規則
JSON Schema 範例:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["name", "email"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "minimum": 0, "maximum": 150 }
}
}
JSON Schema 通常用於驗證 API 請求主體、設定檔以及服務之間的資料交換合約。