JSON Schema検証の解説

JSON Schemaとは何か、スキーマに対してデータを検証する方法、よくあるパターン、無効なJSONのデバッグ方法。

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データをスキーマに対して検証してください — すべてブラウザで実行されます。

Frequently asked questions

JSON Schemaとは何ですか?
JSON Schemaは、JSONドキュメントにアノテーションを付け、検証するためのボキャブラリーです。
JSON Schemaは検証と同じですか?
いいえ。JSON Schemaは仕様です。検証はデータをスキーマに対してチェックするプロセスです。
JSON SchemaはAPI仕様に対してJSONを検証できますか?
はい。JSON SchemaはOpenAPI/Swagger仕様でリクエストとレスポンスのペイロードを定義するためによく使用されます。
JSON Schema検証エラーをデバッグするにはどうすればよいですか?
ほとんどの検証者は、検証が失敗した正確なパスを返します。