JSON Schema バリデーター
検証結果draft-07
検証に合格しました
passed · draft-07
左側にJSON Schema定義、右側に検証対象のJSONデータを貼り付けます。型(type)、必須フィールド(required)、プロパティ(properties)、正規表現(pattern)、enum値、フォーマット(format)を照合し、違反がある場合はエラーパスと詳細メッセージを表示します。
対応しています。JSON Schema Draft-07の全機能を実装しており、allOf(全ての条件を満たす)、anyOf(いずれかの条件を満たす)、oneOf(いずれか1つの条件のみ満たす)、not(条件を満たさない)の複合ロジックを検証できます。
エラーが発生した場合、違反したJSONパス(例: `$.users[0].email`)、エラータイプ(型の不一致、必須フィールド欠落、パターン不一致など)、該当するスキーマルールを表示します。APIコントラクトの不一致やデータ構造の異常を迅速に特定できます。
はい。ETL処理やデータ取り込みの前に、入力データが事前定義されたスキーマに準拠しているか検証できます。不正なデータを早期に検出し、ダウンストリームシステムへの異常データの流入を防止します。
すべての検証処理はブラウザ内で完結し、データは外部サーバーに送信されません。APIレスポンス、認証トークン、データベースのエクスポートデータもローカルで安全に検証できます。
下表は JSON Schema 仕様で最もよく使われる検証キーワードを機能別に分類してまとめたもので、すぐに参照できるようになっています。
| キーワード | 説明 |
|---|---|
| 基本型 | |
type | データ型を指定:string、number、integer、boolean、array、object、null。単一の型または型配列をサポート。 |
| オブジェクト検証 | |
properties | オブジェクトの各プロパティのサブスキーマを定義します。 |
required | 文字列配列で、どのプロパティが必須かを指定します。 |
additionalProperties | propertiesで定義されていない追加プロパティを許可するかどうかを制御します。falseまたはスキーマを設定できます。 |
propertyNames | プロパティ名が一致しなければならないスキーマを制約します(通常はpattern正規表現を使用)。 |
minProperties | オブジェクトに含まれる最小プロパティ数。 |
maxProperties | オブジェクトに含まれる最大プロパティ数。 |
| 列挙型・定数 | |
enum | 列挙値の配列。データは配列内のいずれかの値でなければなりません。 |
const | 定数値。データはこの値と厳密に等しくなければなりません。 |
| 数値制約 | |
minimum | 数値の最小値(境界を含む)。 |
maximum | 数値の最大値(境界を含む)。 |
exclusiveMinimum | 数値が厳密により大きい(境界を含まない)。 |
exclusiveMaximum | 数値が厳密により小さい(境界を含まない)。 |
multipleOf | 数値は指定された数の倍数でなければなりません。 |
| 文字列制約 | |
minLength | 文字列の最小長。 |
maxLength | 文字列の最大長。 |
pattern | 正規表現。文字列はこのパターンに一致しなければなりません。 |
format | セマンティックフォーマット検証:email、uri、date-time、uuid、ipv4、ipv6、hostnameなど。 |
| 配列制約 | |
items | 配列要素のスキーマを定義します(単一のスキーマはすべての要素に適用されます)。 |
minItems | 配列の最小要素数。 |
maxItems | 配列の最大要素数。 |
uniqueItems | 配列の要素が一意である必要があるかどうか。 |
contains | 配列に少なくとも1つの要素がこのスキーマに一致する必要があります。 |
| 組み合わせロジック | |
allOf | データはすべてのサブスキーマに一致しなければなりません(論理積)。 |
anyOf | データは少なくとも1つのサブスキーマに一致しなければなりません(論理和)。 |
oneOf | データはちょうど1つのサブスキーマに一致しなければなりません(排他的論理和)。 |
not | データはこのスキーマに一致してはなりません(論理否定)。 |
| 条件付き検証 | |
if | 条件判定スキーマ。データがifに一致する場合はthenを満たす必要があり、そうでない場合はelseを満たす必要があります。 |
then | if条件が成立した場合に満たす必要があるスキーマ。 |
else | if条件が成立しなかった場合に満たす必要があるスキーマ。 |
| 参照・再利用 | |
$ref | 他のスキーマ定義を参照します。ローカル参照(#/$defs/xxx)とリモート参照をサポート。 |
$defs | 再利用可能なサブスキーマを定義します(Draft 2019-09+、旧版ではdefinitionsを使用)。 |
definitions | Draft 4-7で再利用可能なサブスキーマを定義するためのキーワード。 |
| メタ情報 | |
title | スキーマのタイトル説明(注釈、検証には関与しません)。 |
description | スキーマの詳細説明(注釈、検証には関与しません)。 |
default | デフォルト値(注釈、検証には関与しません)。 |
examples | 例値の配列(注釈、検証には関与しません)。 |
$schema | 使用するJSON Schema仕様のバージョンを指定します。 |
| 依存関係 | |
dependentRequired | プロパティ依存:あるプロパティが存在する場合、他のプロパティも存在しなければならない(Draft 2019-09+)。 |
dependencies | Draft 4-7の依存キーワードで、プロパティ依存とスキーマ依存の両方の機能を持ちます。 |
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 |