メインコンテンツへスキップ
SDETRole
SDETRole

JSON・データ

JSON Schema バリデーター

draft 2020-12 / draft-07 のスキーマで JSON を検証、スキーマ生成も可能。

すべてブラウザ内で動作 登録不要

Schema · 2020-12

JSON data

Paste a schema and some data, or load the sample

No schema yet? Paste a known-good response as data and click “Generate schema from data” to get a starting point.

このツールについて

スキーマ検証は、「レスポンスは正しそうに見える」を、必須フィールド、型、フォーマット、enum、配列の形といった再現可能なコントラクトチェックに変えます。このバリデーターは多くの JavaScript テストスイートで使われている Ajv を使い、ajv-formats で email、date-time、uuid、uri をチェックします。エラーはインスタンスパス(/items/1/qty)とわかりやすいメッセージつきで、最初の 1 件だけでなくすべて表示されます。まだスキーマがない場合は、正しいとわかっているレスポンスを貼り付けてスキーマのひな形を生成し、手作業で厳密にしていきましょう。

使い方

  1. 左にスキーマ、右に JSON データを貼り付けるか、注文のサンプルスキーマと意図的に壊したデータを読み込みます。
  2. ドラフトを「Auto」(自動)のままにするとスキーマの $schema キーワードに従います。2020-12 や draft-07 を強制することもできます。
  3. 一覧のエラーを修正します。入力に合わせて結果が更新されます。
  4. 新しいスキーマを作るには、実際のレスポンスをデータとして貼り付け、「Generate schema from data」(データからスキーマを生成)をクリックします。

JSON Schema バリデーター のよくある質問

draft 2020-12 と draft-07 のどちらを使うべきですか?

ほかのツールが対応している方を使ってください。OpenAPI 3.1 は 2020-12 に準拠しており、多くの古いバリデーターや OpenAPI 3.0 のツールは draft-07 に近い仕様です。目に見える主な違いは、タプル配列(2020-12 では prefixItems、draft-07 では配列形式の items)と、$defs か definitions かという点です。

生成されたスキーマはどの程度使えますか?

1 つのサンプルから推測した出発点です。型、ネストしたオブジェクト、配列要素の形、よく使われる文字列フォーマットを含み、サンプルにあったキーはすべて必須として扱われます。どのフィールドが任意か、どの値が enum か、数値の上限下限などはわからないため、コントラクトとして使う前に必ず見直してください。

不正なメールアドレスが受け入れられるのはなぜですか?

「format」キーワードは、バリデーターがフォーマットチェックを有効にしている場合にのみ適用されます。このツールでは ajv-formats で有効にしていますが、お使いのテストフレームワークで有効になっていなければ、同じデータが通ってしまいます。そちらにも formats プラグインを追加してください。

キーワードを入力すると SDETRole 全体を検索できます。

Pagefind による全文検索 · ブラウザ内で動作します 検索ページを開く →