ガイド

JSONサンプルからJSON Schemaを生成する方法

正しいJSONサンプルを入力すると、その内容からJSON Schemaを生成できます。タイトルは省略でき、空欄なら「Generated Schema」が使われます。

ツール JSON Schema 生成ツール

サンプルJSONからスキーマを作る場面

JSONのサンプルデータから、入力内容に対応するJSON Schemaを作成したいときに使えます。たとえば、APIレスポンスの例を用意して、オブジェクトのプロパティや値の型を確認する用途に向いています。任意でタイトルも指定できます。生成されるスキーマにはJSON Schema draft-07の識別子が含まれます。サンプルに現れた構造を出発点としてスキーマを確認したい場合に便利ですが、入力例に含まれない条件まで自動的に補うものではありません。

使い方の手順

  1. JSONのサンプルデータを文字列として用意します。オブジェクト、配列、文字列、数値、真偽値、nullなど、想定する値を含めてください。将来のデータに複数の形がありそうなら、その違いが分かる要素もサンプルに含めます。

  2. サンプルデータの入力欄に、正しいJSONを貼り付けます。主入力が空白の場合は、json、data、text、input、value、sampleの別名に入れた最初の利用可能な値が使われる場合があります。ただし、利用できるサンプルデータがなければ処理は失敗します。

  3. 必要ならタイトルを入力します。タイトルを省略するか空欄にすると、「Generated Schema」が使われます。タイトルを指定しない場合でも、サンプルからのスキーマ生成は行えます。

  4. 生成を実行します。入力は解析可能なJSONでなければならず、UTF-8で1,000,000バイトを超える選択内容は受け付けられません。JSONの構文に誤りがある場合、内容を修正してから再度入力してください。誤ったJSONがスキーマに変換されるわけではありません。

  5. 表示されたJSON Schemaを確認します。オブジェクトでは観測されたメンバーごとにプロパティのスキーマが作られ、配列では項目のスキーマが作られます。生成結果は、手元の仕様やテスト用データと照らし合わせて確認してください。

生成結果の読み方と注意点

結果は、渡したサンプルに現れた値から推測されたスキーマです。JSONオブジェクトでは、観測されたメンバー名がrequiredに並び、追加プロパティは許可しない形になります。配列が空なら項目の制約は限定されず、項目の形が異なる配列では、重複を除いたanyOfで組み合わされます。

値の型は、null、真偽値、整数、浮動小数点数に応じて推測されます。文字列は通常stringとなり、内容が所定のパターンに合えばemail、uuid、uri、ipv4、date-time、date、timeの形式が付く場合があります。1つのサンプルだけでは、将来現れる別の値や業務上の細かな制約まで表現されるとは限りません。欠落する項目や複数の配列要素などを含むサンプルも確認すると、生成結果と想定との差を把握しやすくなります。

使用例

名前と整数の年齢を持つ利用者データの構造を確認したい場面で、1件のオブジェクトをサンプルとして使います。

API利用者のデータ例として {"name":"A","age":20} をサンプル入力に貼り付け、タイトルを空欄のまま生成します。

オブジェクトスキーマとして、nameとageのプロパティ、両方を含むrequired、追加プロパティを許可しない形が示され、JSON Schemaのdraft-07識別子も含まれます。タイトルを空欄にしたため、タイトルには「Generated Schema」が使われます。

制限事項

  • 生成結果は入力したサンプルから推測されたスキーマです。サンプルに現れない値や業務上の制約まで、自動的に反映されるとは限りません。

よくある間違い

  • JSONの区切り記号や引用符が誤っている、または入力が空白だけだと処理に失敗します。生成前にJSONとして解析できる形へ直し、主入力または利用可能な別名にサンプルデータを入れてください。

よくある質問

空の配列を入力すると、項目の型も推測されますか?

空の配列では項目スキーマに制約が付きません。項目の形を反映したい場合は、値を含む配列をサンプルにしてください。

主入力が空欄でも別の入力方法を使えますか?

主入力が空白のときは、json、data、text、input、value、sampleの別名にある最初の利用可能な値が使われる場合があります。利用可能なデータがなければ処理は失敗します。

文字列の形式もスキーマに反映されますか?

文字列の内容が所定のパターンに合えば、emailやuuidなどの形式が付く場合があります。ただし、すべての文字列に形式が付くわけではありません。

ツール

JSON Schema 生成ツール