JSONスキーマバリデーター

スキーマとドキュメントを貼り付けてドラフトを選択すると、バリデーターがスキーマで使用しているすべてのキーワード(typerequiredenumoneOf$refif/then/else、カスタムのformat)に照らしてドキュメントを検証し、違反ごとに問題箇所を正確に指し示すJSONPath形式のポインタとともに報告します。

スキーマに対して検証する方法

  1. 1

    スキーマを貼り付ける

    JSONスキーマのドラフト04、07または2020-12。`$schema`キーワード(存在する場合)が該当するドラフトを自動的に選択します。

  2. 2

    ドキュメントを貼り付ける

    検証したいJSONです。まず有効なJSONである必要があり、構文エラーはスキーマ評価の前に表示されます。

  3. 3

    検証する

    各違反は、JSONポインタ(`/user/email`)と失敗したキーワード(`format`、`required`など)とともに報告されます。

  4. 4

    修正して再検証する

    どちらかを編集すると、ステータスがリアルタイムで更新されます。

サポートされているキーワード

コア: typeenumconstmultipleOfmaximumminimumexclusiveMaximumexclusiveMinimummaxLengthminLengthpatternmaxItemsminItemsuniqueItemsmaxContainsminContainsmaxPropertiesminPropertiesrequireddependentRequired

組み合わせ: allOfanyOfoneOfnot

適用キーワード: propertiespatternPropertiesadditionalPropertiesitemsprefixItemscontainspropertyNames

条件分岐: ifthenelsedependentSchemas

参照: $ref$defs$id$anchor

フォーマット(有効にすると検証を実施): date-timedatetimedurationemailhostnameipv4ipv6uriuuidregex

エラー出力

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のセレクターにフォールバックします。

標準フォーマット(emaildate-timeuuidipv4など)は、厳格なフォーマット検証が有効な場合に検証されます。スキーマで宣言したカスタムフォーマットは、patternで正規表現を指定しない限り、注釈としてのみ扱われます。

内部参照(#/$defs/foo)は自動的に解決されます。外部のHTTP参照は、セキュリティ上の理由からデフォルトでは取得されません。まず外部参照をインライン化するか、リモートの$ref解決に対応した専用ツールを使用してください。

はい。スキーマもドキュメントもローカルに保持されます。貼り付けた内容がアップロードされることは一切なく、社内APIの契約や機密データにも安全です。

関連ツール

このツールは他の言語でも利用できます