DevTools Japan トップへ

JSON Schema ジェネレーター

サンプルJSONから型を推論してスキーマを自動生成

生成オプション

サンプルJSONを貼り付け

生成された JSON Schema

生成されるスキーマは貼り付けたサンプルJSONの構造から型を推論したたたき台です。format・数値範囲・詳細な必須指定などは含まれないため、用途に合わせて調整してください。入力が空の場合はサンプルJSONの結果を表示します。

JSON Schema ジェネレーターの使い方

サンプルのJSONを貼り付けるだけで、その構造からJSON Schemaを自動生成する無料ツールです。API開発やフォーム検証、設定ファイルの妥当性チェックなどで必要になるスキーマの「たたき台」を、手書きせずに素早く用意できます。インストールや会員登録は不要で、すべての処理はお使いのブラウザ内で完結します。貼り付けたJSONが外部に送信されることはありません。

使い方はかんたんです。入力欄にサンプルのJSONを貼り付け、「スキーマを生成」を押すだけで、下に整形されたJSON Schemaが表示されます。ドラフトは draft-07(デフォルト)と 2020-12 から選べ、title の指定や required の自動付与もワンタッチで切り替えられます。生成したスキーマはコピーやダウンロードができるので、そのままプロジェクトに取り込めます。

主な機能

型推定(string / number / integer / boolean / object / array / null)、オブジェクトのキーからの required 自動付与、配列要素のマージ、ネストした構造への対応に対応しています。整数と小数を判別し、整数値には integer、小数を含む値には number を割り当てます。オブジェクトの配列では全要素のプロパティを統合し、共通して現れるキーだけを required にまとめます。

型推論のしくみ

本ツールは、貼り付けられたJSONの各値を再帰的にたどり、値の種類に応じてスキーマの type を決定します。オブジェクトは properties にキーごとのスキーマを展開し、配列は items に要素のスキーマを推論します。ネストが深い構造でも、内側まで再帰的にたどってスキーマ化します。

JSONの値推論される type補足
"文字列"stringすべての文字列は string
整数(例 123)integer小数点を含まない数値
小数(例 98.5)number小数を含む数値
true / falseboolean真偽値
{ ... }objectproperties と required を生成
[ ... ]arrayitems に要素の型を推論
nullnull値が null の場合

配列とオブジェクトのマージ

オブジェクトの配列では、全要素のプロパティを一つの items スキーマに統合します。required を自動付与している場合は、すべての要素に共通して現れたキーだけを required にまとめるため、要素によって有無が変わるフィールドは任意扱いになります。数値と整数が混在する配列は number に統合し、大きく型が異なる要素が混在する場合は複数の型を配列で表現します。空配列は要素の型を推論できないため、items を付けずに array とだけ出力します。

よくある質問

JSON Schema とは何ですか?
JSON Schema は、JSONデータがどのような構造・型を持つべきかを記述するための仕様です。プロパティ名や型(string / number / boolean など)、必須フィールド、ネストした構造などをスキーマとして定義しておくことで、受け取ったJSONが期待どおりの形かどうかを機械的に検証(バリデーション)できます。APIの入出力定義やフォーム検証、設定ファイルの妥当性チェックなどに広く使われています。
draft-07 と 2020-12 の違いは何ですか?
どちらもJSON Schemaのバージョン(ドラフト)で、$schema に指定するURIが異なります。draft-07 は長く使われてきた安定版で対応ツールが非常に多く、2020-12 はより新しく items の扱いや $dynamicRef など機能が拡張されています。本ツールは基本構造を出力するため、どちらのドラフトを選んでも生成される骨組みは同じで、先頭の $schema の値だけが切り替わります。
required は自動で付きますか?
「required を自動付与」をオンにすると、サンプルJSONに存在するオブジェクトのキーをすべて必須として出力します。配列内に複数のオブジェクトがある場合は、すべての要素に共通して現れたキーだけを required にまとめます。すべてのフィールドを任意にしたい場合はトグルをオフにしてください。
配列の要素はどのように扱われますか?
配列は type が array のスキーマになり、その要素の型は items に推論されます。要素がオブジェクトの配列であれば、全要素のプロパティをマージして一つの items スキーマを作ります。数値と整数が混在する場合は number にまとめるなど、できるだけ一つの型に統合します。空の配列は要素の型を推論できないため items を付けずに array とだけ出力します。
生成したスキーマはそのまま使えますか?
生成されるスキーマは、貼り付けたサンプルJSONの構造から型を推論したたたき台です。基本的な type・properties・required・items を備えているため多くのバリデータでそのまま利用できますが、文字列の書式や数値の範囲などは含まれません。生成結果をコピーまたはダウンロードしたうえで、用途に合わせて制約を追記して仕上げることをおすすめします。

関連ツール

JSON整形JSON/YAML変換JWTデコーダー