JSON スキーマバリデーター

Ajv とフォーマットチェックで、JSON データを JSON スキーマ(draft 2020-12、2019-09、07)に照らして検証。すべてのエラーにインスタンスのパスを表示。ブラウザ内で動作します。

すべてブラウザ内で実行されます。データがアップロードされることはありません。

関連ツール

すべて表示

JSON スキーマバリデーターとは?

JSON スキーマバリデーターは、JSON データを JSON スキーマに照らしてチェックし、必須プロパティの欠落、誤った型、範囲外の数値、無効な形式、余分なプロパティなど、すべての違反を、問題のある値の JSON ポインターとともに一覧表示します。Draft 2020-12、2019-09、07 に対応しています。

JSON スキーマバリデーターの使い方

  1. データを JSON データ に、スキーマを JSON スキーマ に貼り付けます(またはそれぞれで サンプルを読み込む をクリックします)。
  2. スキーマのバージョン は自動判定のままにするか、draft を選びます。
  3. 結果を読みます。成功メッセージか、インスタンスのパス付きのエラー一覧が表示されます。
  4. データ(またはスキーマ)を修正すると、結果が自動的に更新されます。

例

入力
Data: {"age":-1,"email":"x"}
Schema: {"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","required":["name"],"properties":{"age":{"type":"integer","minimum":0},"email":{"type":"string","format":"email"}}}
出力
Validation errors: 3 (draft 2020-12)
(root) Missing required property "name"
/age Must be ≥ 0
/email Must be a valid "email"

JSON スキーマバリデーターを使うべき場面

API のペイロード、設定ファイル、作成中のスキーマのテストに使います。Draft-04 以前のスキーマは未対応です(Ajv 8 で廃止されました)。リモートの $ref の URL はダウンロードされず、スキーマは自己完結している必要があります(#/$defs/... へのローカルな $ref は動作します)。

JSON スキーマバリデーターの仕組み

検証には、広く使われている JSON スキーマの実装である Ajv 8 を使い、すべての違反が報告されるよう allErrors を有効にし、email、date-time、uri、uuid などの format キーワードには ajv-formats を使います。draft はスキーマの $schema の URL(2020-12、2019-09、それ以外は draft-07)から判定されるか、手動で選択します。strict モードはオフなので、example のような未知のキーワードは拒否されずに無視されます。よくあるエラーの種類は翻訳されたメッセージで表示され、それ以外は Ajv のメッセージが使われます。

一般的な使用例

  • OpenAPI 由来のスキーマに対して API のリクエストボディをチェックする
  • 設定ファイルが拒否される理由をデバッグする
  • 新しい JSON スキーマを開発・テストする
  • テストのフィクスチャを検証する

セキュリティ注意事項

すべてブラウザ内でローカルに処理され、貼り付けたコードがアップロードされることはありません。

よくある質問

どの draft に対応していますか?

2020-12、2019-09、draft-07 です(draft-06 のスキーマは通常 draft-07 として動作します)。Draft-04 は未対応です。

email のような形式もチェックされますか?

はい、ajv-formats によってチェックされます。

リモートの $ref スキーマを読み込めますか?

いいえ、同じスキーマ内の参照だけです。

一度に複数のエラーが表示されるのはなぜですか?

すべてのエラーが収集されるため、一度の作業ですべてを修正できます。

おすすめの次のステップ

他のカテゴリを見る