tigtools

JSON 驗證器

貼上 JSON,依照 JSON 標準檢查語法。錯誤會以標記指出確切位置,並附上淺顯易懂的說明。

在瀏覽器中執行 免註冊

貼上 JSON 後,結果會立即顯示在此處。

使用方式

  1. 將 JSON 貼到方框中、開啟檔案,或按一下「試試範例」查看錯誤報告。
  2. 查看結果:有效的 JSON 會顯示綠色訊息;若有錯誤,則會顯示第一個錯誤、所在行列,以及標示問題位置的記號。
  3. 依照提示修正錯誤後重新檢查;輸入內容變更時,結果會即時更新。
  4. 若 JSON 有效,可查看統計資訊:根值型別、鍵數量、巢狀深度和位元組大小。

運作方式

驗證器會使用瀏覽器內建的 JSON 解析器,依據 JSON 標準(RFC 8259 / ECMA-404)檢查語法,因此通過檢查的文件也能由 JavaScript 的 JSON.parse 和其他語言中符合標準的解析器接受。若解析失敗,本工具會使用嚴格檢查器逐字掃描文字,找出第一個錯誤及其確切行列位置,並顯示該行,於問題所在位置下方標示 ^。

提示內容聚焦於手動撰寫 JSON 或從 JavaScript 複製內容時常見的錯誤:最後一個項目後多了逗號、使用單引號括住字串、鍵未加引號、含有 // 或 /* */ 註解、使用 NaN、Infinity 或 undefined 等值、字串中有未跳脫的換行,以及連續貼上兩份 JSON 文件(例如 JSON Lines 檔案)。工具只會回報第一個錯誤,因為一個錯誤往往會影響後續內容的判讀。

本工具只檢查語法,不會依據 JSON Schema 進行驗證,因此無法判斷是否缺少必要欄位。工具也不會對重複鍵發出警告:標準允許重複鍵,而多數解析器會保留最後一個值。統計資料會計算所有層級物件中的鍵數;平面物件或陣列的深度為 1,每增加一層巢狀結構,深度就加 1。

範例

從 JavaScript 複製的設定

{name: 'demo', debug: true,} 會在第 1 行第 2 欄報錯:「物件鍵必須以雙引號括住」。為鍵加上引號後再次檢查,下一個錯誤會指向使用單引號的字串,再下一個則會指出結尾多了逗號。

每行一個物件的記錄檔

若貼上兩行內容,例如 {"id":1} 和 {"id":2},工具會在第 2 行回報「JSON 值結尾後還有其他內容」。每一行單獨看都是有效的 JSON(JSON Lines),但合併後必須以 [ ] 括住,並在兩者之間加上逗號。

檢查 API 負載

只需片刻即可驗證 2 MB 的回應,並顯示根類型:Array、1,500 個頂層項目及深度 4,讓您在撰寫程式碼前快速確認資料是否合理。

常見問題

這個工具會依照 JSON Schema 驗證嗎?

不會。此工具只會檢查文字是否為格式正確的 JSON。若要檢查必填欄位、型別或格式,需使用 JSON Schema 驗證器;此工具不包含這項功能。

為什麼只顯示一個錯誤?

出現第一個語法錯誤後,剖析器無法得知作者原本的意思,因此後續的「錯誤」往往是第一個錯誤造成的連帶問題。修正指出的問題後,如果還有其他錯誤,會立即顯示。

註解或尾隨逗號有可能是有效的嗎?

標準 JSON 不允許註解或尾隨逗號。JSON5 和 JSONC 等格式(某些編輯器的設定檔會使用)允許這些寫法,但標準 JSON 剖析器會拒絕,因此此工具會將它們標示為錯誤。

像 42 或 "hello" 這樣的單一值,是有效的 JSON 嗎?

可以。自 RFC 7159 起,任何 JSON 值都可以作為根值,不限於物件和陣列。不過,有些較舊的工具和 API 仍要求最上層必須是物件或陣列。

為什麼這裡的欄數和我的編輯器不同?

欄數是以 UTF-16 程式碼單位計算,方式與 JavaScript 計算字串長度相同。Emoji 和某些罕見字元會計為兩欄,定位字元則計為一欄,但編輯器顯示時可能會佔較寬的空間。

隱私權

所有驗證作業都在瀏覽器中完成。您貼上或開啟的 JSON 不會上傳、儲存,也不會納入分析資料。