JSON → JSON Schema生成
APIレスポンスや設定ファイルのサンプルJSONから、JSON Schema Draft 2020-12 のたたき台を生成するツールです。ネストしたオブジェクトや型が混在する配列にも対応し、サンプルから断定できない required や enum などの制約は付加しません。生成したSchemaで元のサンプルを検証でき、コピー・保存も可能です。すべてブラウザ内で処理されます。
- JSON Schema Draft 2020-12 のたたき台を生成します。型(type)・プロパティ(properties)・配列の要素(items)だけを出力します。
- サンプル1件だけでは、どの項目が必須か、どんな値が許されるかは確定できません。そのため required・enum・format・最小値などの制約や additionalProperties は付加しません。必要に応じて追記してください。
- 配列の要素は全要素をまとめて1つのSchemaにします。型が混在する場合は複数の型(または anyOf)になり、空配列は要素の型を特定できないため items を出力しません。
サンプルJSONを入力すると、JSON Schemaがここに表示されます。
使い方
- サンプルJSONを貼り付けるか、ファイルを読み込みます。
- 右側にJSON Schemaが自動で生成されます。構文エラーがある場合は行・列が表示されます。
- 生成したSchemaで元のサンプルを検証した結果が表示されます。
- 「コピー」または「保存」で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 で表します。