JSON → JSON Schema生成

APIレスポンスや設定ファイルのサンプルJSONから、JSON Schema Draft 2020-12 のたたき台を生成するツールです。ネストしたオブジェクトや型が混在する配列にも対応し、サンプルから断定できない required や enum などの制約は付加しません。生成したSchemaで元のサンプルを検証でき、コピー・保存も可能です。すべてブラウザ内で処理されます。

JSONはサーバーへ送信されず、Schemaの生成はすべてブラウザ内で行われます。
  • JSON Schema Draft 2020-12 のたたき台を生成します。型(type)・プロパティ(properties)・配列の要素(items)だけを出力します。
  • サンプル1件だけでは、どの項目が必須か、どんな値が許されるかは確定できません。そのため required・enum・format・最小値などの制約や additionalProperties は付加しません。必要に応じて追記してください。
  • 配列の要素は全要素をまとめて1つのSchemaにします。型が混在する場合は複数の型(または anyOf)になり、空配列は要素の型を特定できないため items を出力しません。
生成したJSON Schema

サンプルJSONを入力すると、JSON Schemaがここに表示されます。

使い方

  1. サンプルJSONを貼り付けるか、ファイルを読み込みます。
  2. 右側にJSON Schemaが自動で生成されます。構文エラーがある場合は行・列が表示されます。
  3. 生成したSchemaで元のサンプルを検証した結果が表示されます。
  4. 「コピー」または「保存」でSchemaを取り出し、必要な制約(required・enum・format など)を追記します。

このツールについて

入力検証用のJSON Schemaを一から書くのは手間がかかります。このツールはサンプルJSONの型とプロパティの構造を読み取り、Schemaのたたき台を作ります。整数は integer、小数を含む数値は number として出力します。

サンプル1件からは、どの項目が必須か、どんな値が許されるかは分かりません。そのため required・enum・format・最小値・additionalProperties などは付加せず、型と構造だけを出力します。配列の要素は全要素をまとめて1つのSchemaにし、複数のオブジェクトに分かれて現れるプロパティもまとめます。

生成したSchemaは JSON Schemaバリデーターと同じ検証エンジンで元のサンプルを検証し、適合することを確認できます。入力したJSONがサーバーへ送信されることはありません。

[1,2.5] を入力すると、生成結果のtypeはarray、itemsのtypeはnumberになります。整数を含めて数値としてまとめるため、itemsにintegerとnumberを重複して並べません。[1,"2"] ならitemsのtypeはintegerとstringの配列になります。

生成元のサンプルが適合していても、将来のデータを十分に制限できるとは限りません。たとえば注文数の項目には負の整数も通り得るため、実際の入力条件に合わせてminimumを追記し、許可したい例と拒否したい例の両方で検証してください。

よくある質問

required が出力されないのはなぜですか?

サンプルに含まれている項目が、常に存在する必須項目なのかを判断できないためです。必須にしたい項目は生成後に required へ追記してください。

空の配列はどう出力されますか?

要素の型が分からないため、items を付けずに type: array だけを出力します。空のオブジェクトも同様に type: object だけになります。

型が混在する配列はどうなりますか?

文字列や数値などが混在する場合は type に複数の型を並べます。オブジェクトや配列と他の型が混在する場合は anyOf で表します。