JSON Schemaは、JSONデータに注釈を付け、検証するための語彙です。データの構造、型、制約を定義します。
JSON Schemaとは?
JSON Schemaは、別のJSON文書の期待される形状を記述する、それ自体がJSON文書です。どのフィールドが存在すべきか、どのような型であるべきか、どのような値が許可されるかを指定します。
{ "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer", "minimum": 0 }, "email": { "type": "string", "format": "email" } }, "required": ["name", "email"]}JSON Schemaを使う理由
検証なしでは、アプリケーションはどのようなデータでも静かに受け入れ、実行時に予期せずに失敗します。JSON Schemaはエラーを早期にキャッチします。
- APIコントラクト — リクエストとレスポンスボディが期待される形式と一致することを確認。
- 設定の検証 — 設定ファイルのタイポや不足フィールドをキャッチ。
- フォーム検証 — クライアントとサーバーの両方で同じスキーマを使用してユーザー入力を検証。
- ドキュメント — 良く書かれたスキーマはデータモデルのライブドキュメントとして機能。
コアキーワード
typeは期待されるデータ型を指定。文字列:minLength、maxLength、pattern、format。数値:minimum、maximum。配列:items、minItems、maxItems。オブジェクト:properties、required、additionalProperties。
allOf、anyOf、oneOfによるコンポジション
allOfはすべてのスキーマが一致することを要求。anyOfは少なくとも1つが一致することを要求。oneOfはちょうど1つが一致することを要求。notはスキーマを反転させます。
無効なJSONのデバッグ
検証が失敗した場合、明確なエラーメッセージが必要です。JSON FormatterツールはJSONをフォーマットして検査するのに役立ちます。
ベストプラクティス
$refを使用 — スキーマの重複を避ける。- 具体的に — 固定値セットには
enumを使用。 - スキーマをバージョニング —
$schemaと$idを使用。 - 境界で検証 — データをできるだけ早く検証。
試してみる
ローカルツールを使用してJSONデータをスキーマに対して検証してください — すべてブラウザで実行されます。