JSONスキーマバリデーター
スキーマとドキュメントを貼り付けてドラフトを選択すると、バリデーターがスキーマで使用しているすべてのキーワード(type、required、enum、oneOf、$ref、if/then/else、カスタムのformat)に照らしてドキュメントを検証し、違反ごとに問題箇所を正確に指し示すJSONPath形式のポインタとともに報告します。
スキーマに対して検証する方法
-
1
スキーマを貼り付ける
JSONスキーマのドラフト04、07または2020-12。`$schema`キーワード(存在する場合)が該当するドラフトを自動的に選択します。
-
2
ドキュメントを貼り付ける
検証したいJSONです。まず有効なJSONである必要があり、構文エラーはスキーマ評価の前に表示されます。
-
3
検証する
各違反は、JSONポインタ(`/user/email`)と失敗したキーワード(`format`、`required`など)とともに報告されます。
-
4
修正して再検証する
どちらかを編集すると、ステータスがリアルタイムで更新されます。
サポートされているキーワード
コア: type、enum、const、multipleOf、maximum、minimum、exclusiveMaximum、exclusiveMinimum、maxLength、minLength、pattern、maxItems、minItems、uniqueItems、maxContains、minContains、maxProperties、minProperties、required、dependentRequired。
組み合わせ: allOf、anyOf、oneOf、not。
適用キーワード: properties、patternProperties、additionalProperties、items、prefixItems、contains、propertyNames。
条件分岐: if、then、else、dependentSchemas。
参照: $ref、$defs、$id、$anchor。
フォーマット(有効にすると検証を実施): date-time、date、time、duration、email、hostname、ipv4、ipv6、uri、uuid、regex。
エラー出力
FAIL /user/email format "not-an-email" is not a valid "email"
FAIL /user/age minimum -3 is less than the minimum 0
FAIL /orders/0/total type "42" is not of type "number"
FAIL / required missing required property "shippingAddress"
すべてのエラーには失敗したパスとキーワードが含まれるため、エディタ内ですばやく特定できます。
落とし穴になりやすいドラフト間の違い
| キーワード | ドラフト04 | ドラフト07 | ドラフト2020-12 |
|---|---|---|---|
id と $id |
id |
$id |
$id |
exclusiveMaximum をブール値として |
はい | 数値 | 数値 |
items の配列構文 |
items |
items |
prefixItems |
$ref が兄弟キーワードを許可 |
いいえ | いいえ | はい |
正しいドラフトを設定してください。ドラフト04のスキーマを2020-12として検証すると、idやその他の細かな点が誤って解釈されます。
典型的なワークフロー
- API契約テスト: デプロイ前に、生成または更新したOpenAPIスキーマを実際のサンプルレスポンスに照らして実行します。
- 設定の堅牢化: マージ前に、CIですべてのYAML/JSON設定をスキーマに照らして検証します。
- データ取り込み: 期待する形に合致しないペイロードを、明確なエラーメッセージとともに早い段階で拒否します。
よくある間違い
formatの適用を忘れる。 デフォルトでは、ほとんどのバリデーターは未知のフォーマットを注釈としてのみ扱います。不正なメールアドレスや日付を実際に拒否するには、厳格なフォーマット検証を有効にしてください。oneOfの使いすぎ。oneOfの2つの分岐が重なると、ドキュメントは失敗します(ちょうど1つだけに一致する必要があります)。anyOfまたはディスクリミネーターのパターンを使用してください。additionalProperties: falseによる厳格すぎるスキーマ。 新しい任意フィールドを追加することが互換性を壊す変更になってしまいます。本当に閉じたオブジェクトが必要な場合を除き、指定しないでください。
よくある質問
はい。ドラフト2020-12、07、04のすべてに対応しています。バリデーターはドキュメントの$schemaキーワードを読み取って適切なものを選択するか、UIのセレクターにフォールバックします。
標準フォーマット(email、date-time、uuid、ipv4など)は、厳格なフォーマット検証が有効な場合に検証されます。スキーマで宣言したカスタムフォーマットは、patternで正規表現を指定しない限り、注釈としてのみ扱われます。
内部参照(#/$defs/foo)は自動的に解決されます。外部のHTTP参照は、セキュリティ上の理由からデフォルトでは取得されません。まず外部参照をインライン化するか、リモートの$ref解決に対応した専用ツールを使用してください。
はい。スキーマもドキュメントもローカルに保持されます。貼り付けた内容がアップロードされることは一切なく、社内APIの契約や機密データにも安全です。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
EditorConfig ジェネレーター
インデントのスタイルとサイズ、改行コード、文字コード、空白ルールを指定して .editorconfig ファイルを生成し、IDE やエディタをまたいで書式を統一できます。
メールアドレス検証ツール
メールアドレスを検証します。RFC 5322構文チェック、MXレコードのライブ確認に加え、ローカル部、ドメイン、長さの詳細を表示します。メールは送信されません。
Markdownチートシート
見出し、リスト、表、コード、リンク、画像、GFM構文を、実際のプレビューとコピーできる例で確認できる実用的なMarkdownリファレンスです。
このツールは他の言語でも利用できます
- Validateur de schéma JSON [FR]
- JSON Schema-validator [SV]
- เครื่องมือตรวจสอบ JSON Schema [TH]
- أداة التحقق من مخطط JSON [AR]
- Penentu Struktur JSON [ID]
- Trình xác thực JSON Schema [VI]
- JSON 스키마 검증기 [KO]
- JSON-Schema-Validator [DE]
- Validador de JSON Schema [ES]
- JSON Schema-validator [NL]
- Walidator JSON Schema [PL]
- Validador de JSON Schema [PT]
- Валидатор JSON Schema [RU]
- JSON Şeması Doğrulayıcı [TR]
- JSON 模式验证器 [ZH]
- JSON Schema Validator [EN]
- Validator di JSON Schema [IT]