JSON Schema ジェネレーター
ブラウザー内でローカル実行サンプル JSON から Draft 2020-12 の JSON Schema を推論
JSON サンプル
JSON Schema Generator でできること
サンプル JSON を読み取り、"$schema" URI が https://json-schema.org/draft/2020-12/schema の JSON Schema Draft 2020-12 ドキュメントを出力します。ネストしたオブジェクトはネストした properties に、配列は items スキーマになり、整数は integer、それ以外の数値は number として扱います。null を取りうるフィールドは ["string", "null"] のような型の配列で表します。オブジェクトや配列がほかの型と同じ位置に現れる場合は、型ごとに 1 つの分岐を持つ anyOf を使うため、混在した配列でも生成が失敗しません。
使い方
- 1.JSON サンプルを貼り付けるか、.json ファイルを 1 つアップロードまたはドロップするか、例を読み込みます。複数レコードの配列が最も正確な結果になります。
- 2.入力に合わせてスキーマが更新されます。2 MB を超える入力は「スキーマを生成」を押すまで待機します。
- 3.必要ならタイトルを入力し、「フォーマットを検出」「例を含める」「必須フィールドを推論」「enum を推論」を選びます。
- 4.任意フィールド、null のみ、混在型、enum に関する推論メモを確認します。
- 5.「サンプルを検証」を選び、スキーマをコピーするか schema.json をダウンロードします。
オプションの仕組み
必須フィールドは、ある位置で見つかったすべてのオブジェクトに存在するキーです。レコードの配列で 1 件でも欠けているキーは任意のままになります。オブジェクトが 1 つだけでは任意のキーを判断できないため、その旨を表示します。フォーマット(email、uri、date-time、date、time、uuid、ipv4)は、その位置のすべての文字列が同じフォーマットに完全一致した場合だけ追加し、検出をオフにすると format キーワードはすべて消えます。enum は既定でオフで、ID、フォーマット付きの値、自由記述ではない、繰り返し現れる少数の値の文字列に対してのみ推論し、サンプルのすべての値を必ず含めます。
検証・制限・プライバシー
「サンプルを検証」は、Ajv の Draft 2020-12 strict モードと ajv-formats でスキーマをコンパイルしてサンプルをチェックし、失敗があれば JSON Pointer とルールを表示します。例から推論したスキーマはサンプルに現れた内容しか表しません。オブジェクトは追加キーを許可したままで、値の範囲、パターン、長さは推測しません。JavaScript の精度を超える数値は型は正しく扱いますが、例には含めません。処理はすべてブラウザー内で行われ、バリデーターは必要になったときだけ読み込まれます。
