JSON Schema ジェネレーター(Draft 2020-12)
サンプルの JSON から JSON Schema(draft 2020-12)を生成します。型、必須キー、null 許容のユニオン、配列の items、email や date-time などの文字列フォーマットに対応。
すべてブラウザ内で実行されます。データがアップロードされることはありません。
関連ツール
すべて表示JSON Schema ジェネレーターとは?
サンプルのドキュメントから JSON Schema を推論します。各プロパティの型を記述し、配列の要素を 1 つの items スキーマにまとめ、必須キーを列挙し、null 許容の値を型のユニオンで示し、一般的な文字列フォーマットを検出することもできます。
JSON Schema ジェネレーターの使い方
- JSON 入力 に JSON を貼り付けるか、サンプルを読み込む や ファイルを開く を使います。
- 必要に応じて スキーマのタイトル を設定します。
- キーを必須 (required) にする、文字列フォーマットを検出、追加プロパティを禁止 を切り替えます。
- JSON Schema の出力は入力に合わせて更新されます。コピー または ダウンロード を使います。
例
{"id":1,"email":"a@b.co"} {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"email": {
"type": "string",
"format": "email"
}
},
"required": [
"id",
"email"
]
} JSON Schema ジェネレーターを使うべき場面
API の契約、設定の検証、フォーム生成の出発点として使います。1 つのサンプルから推論したスキーマの質はそのサンプル次第です。実際のデータの検証に使う前に、minimum、enum、pattern などの制約を手動で追加してください。
JSON Schema ジェネレーターの仕組み
サンプルを再帰的にたどり、各位置で見つかった JSON の型(integer、number、string、boolean、object、array、null)を集めます。整数と小数が混在する場合は number になり、複数の型がある場合は ["object", "null"] のような type 配列になります。オブジェクトの配列では、すべてのオブジェクトにあるプロパティだけが必須になります。フォーマットの検出では、文字列を date-time、date、time、email、uuid、uri、ipv4 のパターンと照合し、すべての値が一致した場合にのみ format を追加します。結果には $schema: https://json-schema.org/draft/2020-12/schema が宣言されます。
一般的な使用例
- API のリクエストボディのスキーマを素早く作る
- ajv や CI のチェックで設定ファイルを検証する
- Webhook のペイロードの形を文書化する
- JSON Schema を受け付けるツールでスキーマからフォームを生成する
よくある質問
どのドラフトが生成されますか?
Draft 2020-12 で、$schema キーワードで宣言されます。使われるキーワード(type、properties、required、items、format、additionalProperties)は draft-07 でも有効です。
オプショナルなプロパティはどのように判定されますか?
オブジェクトの配列からのみ判定されます。一部の要素でキーがない場合、そのキーは required から外れます。単一のオブジェクトでは、オプションがオンのときすべてのキーが必須になります。
format の検証は強制されますか?
JSON Schema では format は既定で注釈です。ajv などのバリデーターでは、フォーマット検証(ajv-formats)を有効にする必要があります。