JSON Schema 驗證器
根據 JSON Schema 定義驗證 JSON 資料。取得包含路徑的詳細錯誤報告。所有處理均在您的瀏覽器中完成。
JSON 資料符合提供的 Schema,驗證通過!
| 路徑 | 錯誤 |
|---|
如何使用 JSON Schema 驗證器
輸入 Schema
定義描述預期結構的 JSON Schema。
輸入資料
貼上您要根據 Schema 驗證的 JSON 資料。
驗證
點擊「驗證」並檢視結果是否有任何錯誤。
什麼是 JSON Schema?
JSON Schema 是一種詞彙表,允許您標註與驗證 JSON 文件。它為特定應用程式所需的 JSON 資料以及如何與其互動提供了合約。JSON Schema 用於驗證、文件撰寫與產生模擬資料。
主要功能
型別驗證
驗證型別:string、number、integer、boolean、array、object、null
約束條件
最小/最大長度、範圍、模式、必填欄位等
結構定義
定義巢狀物件、陣列與複雜資料結構
常見問題
本工具透過 Ajv 函式庫支援 JSON Schema Draft-07、Draft 2019-09 與 Draft 2020-12。支援大多數常見的 Schema 功能。
可以!JSON Schema 支援深層巢狀的物件與陣列。您可以在任何巢狀層級定義 properties 與 items,並為每個欄位設定個別的驗證規則。
本工具會先驗證您的 Schema 本身是否為有效的 JSON Schema。如果 Schema 有錯誤,這些錯誤會在嘗試驗證資料之前被回報。
type(string、number、object、array、boolean、null)、包含巢狀 Schema 的 properties、列出必填鍵值的 required、用於固定值集合的 enum、以正規表示式約束字串的 pattern,以及範圍檢查 minimum/maximum 與 minLength/maxLength。additionalProperties: false 會收緊物件,禁止出現額外的鍵值。這些關鍵字合起來涵蓋了大部分的 API 驗證規則。
在現代 JSON Schema 中,format 預設是註解而非自動斷言——驗證器只有在明確設定的情況下才會強制檢查,2020-12 規範透過獨立的 format-assertion 詞彙表明確了這一點。若必須保證強制執行,請使用 pattern 或自訂關鍵字,否則可將 format 視為互通性中繼資料。
指向 #/$defs/address 的 $ref 會參照 $defs 底下的 Schema 片段,並在所有使用處依該片段進行驗證——這就是去重複機制。Draft 2020-12 將舊的 definitions 更名為 $defs,並為留言串之類的遞迴結構正式制定 $dynamicRef。參照也可以指向外部文件,但更常見的做法是將其打包在本地。
allOf 要求每個子 Schema 都必須通過驗證——也就是交集,用於在基礎 Schema 上附加額外約束。anyOf 要求至少一個通過——也就是聯集,用於多型酬載。oneOf 則要求恰好一個通過;若兩個或零個子 Schema 通過驗證即為失敗,這比大多數人預期的更嚴格,也是 Schema 彼此重疊時出現意外錯誤的常見原因。
2020-12 將規範拆分為可個別協商的詞彙表(validation、annotation、format-assertion)、將 definitions 更名為 $defs、將 exclusiveMinimum 簡化為單純數值,並以 prefixItems 加上 items 取代舊的 items 關鍵字。大多數工具兩者皆支援;draft-07 仍是部署最廣泛的版本,但 2020-12 才是現行發布的標準。