JSON Schema生成ツール
ブラウザ上でサンプルJSONデータからDraft-07対応のJSON Schemaを推論します。
生成されたスキーマ
スキーマ生成完了
- 定義されたプロパティ
- -
- トップレベルキー
- -
使い方
JSON SchemaはJSONデータの構造を記述・検証するための語彙です。このツールはサンプルのオブジェクトや配列を検査し、すべての値の型とフォーマットを推論して、検証ライブラリにそのまま組み込めるDraft-07対応のスキーマを構築します。
- 代表的なサンプルJSONを貼り付けてください
想定されるすべてのフィールドを実際の例となる値とともに含めてください。
- 必須項目、例、追加プロパティを選択してください
オプションを変更するとスキーマが更新されます。
- スキーマをコピーまたはダウンロードしてください
本番環境で使用する前に、required配列とフォーマットを確認してください。
生成ツールが検出する内容
すべての値はstring、integer、number、boolean、array、object、nullのいずれかとして型付けされます。文字列値はさらに一般的なフォーマット(email、date、date-time、uri、uuid、ipv4)に対してこの順序でチェックされ、複数のパターンに一致する場合は最初に一致したものが採用されます。同じ推論型を持つ項目を含む配列は単一のitemsスキーマに集約され、型が混在する配列はoneOfを使用し、例は重複ではなくマージされます。
スキーマの品質はサンプルに依存します
生成ツールは入力されたデータのみを推論します。フィールドがnullまたは文字列になり得る場合でも、サンプルに文字列のみが含まれていると、スキーマはstring型のみを指定し、null許容ケースを見逃します。実際のデータで想定されるすべての値の型、任意のフィールド、エッジケースを網羅したサンプルを使用してください。
よくある質問
サンプルJSONデータからJSON Schemaを自動生成するにはどうすればよいですか?
代表的なJSONオブジェクトまたは配列を入力欄に貼り付けてください。ツールは各キーと値を調べ、型(文字列、数値、真偽値、配列、オブジェクト、null)を推測し、入力と同時にDraft-07互換のJSON Schemaを生成します。任意でスキーマタイトルを追加し、オブジェクトのキーを必須にするか、例の値を含めるか、追加プロパティを許可するかを選べます。
生成されたJSON Schemaはサーバーに送信されますか?
いいえ。スキーマ生成はJavaScriptを使用してブラウザ内で完結します。JSONデータおよび生成されたスキーマはお使いのデバイス内に留まります。本番データ、内部APIペイロード、機密性の高い設定オブジェクトなどをソースとして使用しても、サーバー側にデータが漏洩することなく安全にご利用いただけます。
JSON Schemaは何に使われますか?開発者にとってなぜ必要なのですか?
JSON SchemaはJSONデータ構造を記述・検証するための語彙です。開発者はこれを使用してAPIリクエストやレスポンスボディの検証、ドキュメント生成、quicktypeやopenapi-generatorなどのコード生成ツールの設定、サービス間のデータ契約の強制、スキーマ駆動フォームをサポートするフレームワークでのフォーム検証の設定などを行います。
単一のサンプルからJSON Schemaを推論する際の主な制限は何ですか。
生成ツールは提供されたサンプルに含まれる内容のみを推論できます。フィールドがnullの場合も文字列の場合もあるのに、サンプルに文字列のパターンしか含まれていない場合、スキーマはstring型のみを指定し、null許容のケースを見逃してしまいます。正確なスキーマを生成するには、想定されるすべての値の型、任意のフィールド、エッジケースを網羅した代表的なサンプルを使用してください。
生成されたJSON Schemaをコード内のデータ検証に使用できますか。
はい。生成されるスキーマは標準的なJSON Schema Draft-07であり、JavaScriptおよびNode.js用のAjv、Python用のjsonschema、.NET用のJSON.NET Schemaなど、主要な検証ライブラリでサポートされています。スキーマの出力をコピーし、お好みの検証ライブラリに組み込んでください。本番環境で使用する前に、required配列と型の制約を確認・調整してください。
サンプルに含まれない追加のプロパティを許可すべきですか。
デフォルトではadditionalPropertiesがfalseに設定されており、検証時にサンプルにないフィールドは拒否されます。これはタイプミスや予期しないデータを検出するのに役立ちます。柔軟なAPIレスポンスのように、実際のデータにサンプルに含まれていない正当な任意のフィールドが存在する場合は、「ここに記載されていない追加プロパティを許可」をオンにしてください。