コンテンツへスキップ

JSON Schema生成ツール

ブラウザ上でサンプルJSONデータからDraft-07対応のJSON Schemaを推論します。

オプション

生成されたスキーマ

スキーマ生成完了

定義されたプロパティ
-
トップレベルキー
-

使い方

JSON SchemaはJSONデータの構造を記述・検証するための語彙です。このツールはサンプルのオブジェクトや配列を検査し、すべての値の型とフォーマットを推論して、検証ライブラリにそのまま組み込めるDraft-07対応のスキーマを構築します。

  1. 代表的なサンプルJSONを貼り付けてください

    想定されるすべてのフィールドを実際の例となる値とともに含めてください。

  2. 必須項目、例、追加プロパティを選択してください

    オプションを変更するとスキーマが更新されます。

  3. スキーマをコピーまたはダウンロードしてください

    本番環境で使用する前に、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レスポンスのように、実際のデータにサンプルに含まれていない正当な任意のフィールドが存在する場合は、「ここに記載されていない追加プロパティを許可」をオンにしてください。