JSON Schema 驗證器
驗證結果draft-07
驗證通過
passed · draft-07
只需將您預期的 JSON Schema 定義貼到左側,將 API 實際回傳的 JSON 資料貼到右側。工具會自動比對兩者結構,精準驗證資料類型、必填欄位、正規表達式等規則。這是進行 API 合約測試、確保前後端資料結構一致性的必要步驟。
工具完全遵循 JSON Schema Draft-07 標準。支援基礎的類型檢查(type)、必填欄位(required)、屬性定義(properties)、正規表達式比對(pattern)、格式驗證(format)、列舉值(enum),以及強大的組合邏輯驗證(allOf, anyOf, oneOf, not)。
當 JSON 資料與 Schema 不符時,工具會產生非常詳細的錯誤報告。報告會精準指出出錯的 JSON 路徑、具體的錯誤類型(如類型不符、缺少必填欄位)以及對應的 Schema 規則,大幅提升後端開發與資料清洗的除錯效率。
在 ETL 資料清洗或資料入库前,您可以先用本工具驗證資料是否符合預先定義的 Schema 規範。這能有效攔截髒資料與異常資料,確保進入資料庫或下游系統的資料品質,是建構穩健資料管線的重要環節。
不會。我們的 JSON Schema 驗證器完全在您的瀏覽器本地進行處理,無論是企業核心 API 資料結構還是個人業務資料,都不會上傳到任何伺服器,確保您的資料隱私獲得企業級的安全保障。
下表列出了 JSON Schema 規範中最常用的驗證關鍵字,按功能分類整理,方便快速查閱。
| 關鍵字 | 說明 |
|---|---|
| 基礎類型 | |
type | 指定資料類型:string、number、integer、boolean、array、object、null。支援單類型或類型陣列。 |
| 物件驗證 | |
properties | 定義物件各屬性的子 Schema。 |
required | 字串陣列,指定哪些屬性是必填的。 |
additionalProperties | 控制是否允許未在 properties 中定義的額外屬性,可設為 false 或一個 Schema。 |
propertyNames | 約束屬性名必須匹配的 Schema(通常用 pattern 正則)。 |
minProperties | 物件最少包含的屬性數量。 |
maxProperties | 物件最多包含的屬性數量。 |
| 列舉常數 | |
enum | 列舉值陣列,資料必須是陣列中的某一個值。 |
const | 常數值,資料必須嚴格等於該值。 |
| 數值約束 | |
minimum | 數值最小值(包含邊界)。 |
maximum | 數值最大值(包含邊界)。 |
exclusiveMinimum | 數值嚴格大於(不包含邊界)。 |
exclusiveMaximum | 數值嚴格小於(不包含邊界)。 |
multipleOf | 數值必須是指定數的倍數。 |
| 字串約束 | |
minLength | 字串最小長度。 |
maxLength | 字串最大長度。 |
pattern | 正規表示式,字串必須匹配該模式。 |
format | 語義格式驗證:email、uri、date-time、uuid、ipv4、ipv6、hostname 等。 |
| 陣列約束 | |
items | 定義陣列元素的 Schema(單 Schema 適用於所有元素)。 |
minItems | 陣列最少元素個數。 |
maxItems | 陣列最多元素個數。 |
uniqueItems | 陣列元素是否必須唯一。 |
contains | 陣列中至少有一個元素匹配該 Schema。 |
| 組合邏輯 | |
allOf | 資料必須匹配所有子 Schema(邏輯與)。 |
anyOf | 資料至少匹配一個子 Schema(邏輯或)。 |
oneOf | 資料必須恰好匹配一個子 Schema(互斥或)。 |
not | 資料必須不匹配該 Schema(邏輯非)。 |
| 條件驗證 | |
if | 條件判斷 Schema,資料匹配 if 時需滿足 then,否則需滿足 else。 |
then | if 條件成立時需要滿足的 Schema。 |
else | if 條件不成立時需要滿足的 Schema。 |
| 引用複用 | |
$ref | 引用其他 Schema 定義,支援本地引用(#/$defs/xxx)和遠端引用。 |
$defs | 定義可複用的子 Schema(Draft 2019-09+,舊版用 definitions)。 |
definitions | Draft 4-7 中用於定義可複用子 Schema 的關鍵字。 |
| 元資訊 | |
title | Schema 的標題說明(註解,不參與驗證)。 |
description | Schema 的詳細描述(註解,不參與驗證)。 |
default | 預設值(註解,不參與驗證)。 |
examples | 示例值陣列(註解,不參與驗證)。 |
$schema | 指定使用的 JSON Schema 規範版本。 |
| 依賴關係 | |
dependentRequired | 屬性依賴:某個屬性存在時,要求其他屬性也必須存在(Draft 2019-09+)。 |
dependencies | Draft 4-7 中的依賴關鍵字,兼具屬性依賴和 Schema 依賴功能。 |
JSON Schema 經歷了多個 Draft 版本演進,Draft 7 是目前最廣泛使用的版本,Draft 2020-12 是最新穩定版。
| 功能特性 | Draft 4 | Draft 6 | Draft 7 | 2019-09 | 2020-12 |
|---|---|---|---|---|---|
| type 類型驗證 | ✓ | ✓ | ✓ | ✓ | ✓ |
| required 必填欄位 | ✓ | ✓ | ✓ | ✓ | ✓ |
| enum/const 常數 | ✓ enum | ✓ | ✓ | ✓ | ✓ |
| minimum/maximum 數值範圍 | ✓ | ✓ | ✓ | ✓ | ✓ |
| exclusiveMinimum/Maximum | 布林值 | 數值 | 數值 | 數值 | 數值 |
| multipleOf 倍數驗證 | ✓ | ✓ | ✓ | ✓ | ✓ |
| minLength/maxLength | ✓ | ✓ | ✓ | ✓ | ✓ |
| pattern 正則匹配 | ✓ | ✓ | ✓ | ✓ | ✓ |
| format 格式驗證 | ✓ | ✓ | ✓ | 預設註解 | 預設註解 |
| items 陣列驗證 | ✓ | ✓ | ✓ | ✓ | ✓ |
| contains 包含元素 | ✗ | ✓ | ✓ | ✓ | ✓ |
| minItems/maxItems | ✓ | ✓ | ✓ | ✓ | ✓ |
| uniqueItems | ✓ | ✓ | ✓ | ✓ | ✓ |
| additionalProperties | ✓ | ✓ | ✓ | ✓ | ✓ |
| propertyNames | ✗ | ✓ | ✓ | ✓ | ✓ |
| allOf/anyOf/oneOf/not | ✓ | ✓ | ✓ | ✓ | ✓ |
| if/then/else 條件 | ✗ | ✗ | ✓ | ✓ | ✓ |
| $ref 引用 | ✓ | ✓ | ✓ | ✓ | ✓ |
| $defs 定義複用 | definitions | definitions | definitions | $defs | $defs |
| dependentRequired | ✗ | ✗ | ✗ | ✓ | ✓ |
| prefixItems 元組驗證 | 陣列形式 | 陣列形式 | 陣列形式 | 陣列形式 | prefixItems |
| unevaluatedProperties | ✗ | ✗ | ✗ | ✓ | ✓ |
| $dynamicRef/$anchor | ✗ | ✗ | ✗ | ✓ $recursiveRef | ✓ dynamicRef |