JSON スキーマバリデーター
Ajv とフォーマットチェックで、JSON データを JSON スキーマ(draft 2020-12、2019-09、07)に照らして検証。すべてのエラーにインスタンスのパスを表示。ブラウザ内で動作します。
すべてブラウザ内で実行されます。データがアップロードされることはありません。
関連ツール
すべて表示JSON スキーマバリデーターとは?
JSON スキーマバリデーターは、JSON データを JSON スキーマに照らしてチェックし、必須プロパティの欠落、誤った型、範囲外の数値、無効な形式、余分なプロパティなど、すべての違反を、問題のある値の JSON ポインターとともに一覧表示します。Draft 2020-12、2019-09、07 に対応しています。
JSON スキーマバリデーターの使い方
- データを JSON データ に、スキーマを JSON スキーマ に貼り付けます(またはそれぞれで サンプルを読み込む をクリックします)。
- スキーマのバージョン は自動判定のままにするか、draft を選びます。
- 結果を読みます。成功メッセージか、インスタンスのパス付きのエラー一覧が表示されます。
- データ(またはスキーマ)を修正すると、結果が自動的に更新されます。
例
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 スキーマを読み込めますか?
いいえ、同じスキーマ内の参照だけです。
一度に複数のエラーが表示されるのはなぜですか?
すべてのエラーが収集されるため、一度の作業ですべてを修正できます。