開発・デバッグ支援

JSON Schema生成

JSONを入力して「生成」を押すと、構造を解析してJSON Schema(Draft 2020-12)のたたき台を自動生成します。requiredは任意で出力でき、不正なJSONはエラー位置の目安とともに表示します。

入力データはサーバーへ送信されませんインストール不要無料で使えます

入力例

既定ではrequiredを出力しません(1件のサンプルからは必須かどうかを判定できないため)。ONにすると、サンプルに現れたプロパティを必須として出力します。配列要素ごとに構造が異なる場合は、全要素に共通するプロパティのみを必須にします。

結果

JSONを入力して「生成」を押してください。

このツールでできること

JSON Schema生成の主な機能です。

  • JSONの構造からJSON Schema(Draft 2020-12)のたたき台を自動生成できます
  • object/array/string/integer/number/boolean/nullの型を自動判定します
  • ネストしたObject・Object配列・プリミティブ配列に対応します
  • 配列内の型混在を単一型として誤判定せず、type配列で表現します
  • 「すべてのプロパティを必須にする」を選んだ場合のみrequiredを出力します
  • 不正なJSONの場合はエラー位置・原因の目安を表示します
  • 処理はブラウザ内で完結し、入力を外部へ送信しません

使い方

JSONからJSON Schemaを生成する手順を説明します。

手順を見る
  1. JSONを入力します
  2. 必要に応じて「すべてのプロパティを必須(required)にする」を切り替えます
  3. 「生成」を押します
  4. 生成されたJSON Schemaを確認し、必要に応じてコピーします

こんなときに使えます

こんな場面でJSON Schema生成が役立ちます。

利用シーンを見る
  • APIレスポンスの構造をSchema化し、ドキュメントや検証の土台にしたいとき
  • JSON Schema Validatorで使うSchemaのたたき台をすばやく作りたいとき
  • ネストが深いJSONや配列を含むJSONを、手作業でSchemaに書き起こす手間を減らしたいとき
  • AIや外部APIから取得したJSONの構造を整理・把握したいとき

JSON Schema生成の仕組みと注意点

このツールの動作の仕組みを説明します。

詳しい解説を見る

対応するJSON Schema Draftは2020-12固定です

生成したSchemaには"$schema": "https://json-schema.org/draft/2020-12/schema"を含めます。複数Draftの選択には対応していません。JSON Schemaバリデーターも既定でDraft 2020-12として検証するため、生成したSchemaをそのまま確認できます。

requiredは既定で出力されません

1件のサンプルJSONだけからは、そのプロパティが本当に必須かどうかを判定できません。そのため既定ではrequiredを出力しません。「すべてのプロパティを必須(required)にする」をONにすると、サンプルに現れたプロパティを必須として出力します。配列要素ごとに構造が異なる場合(Object配列)は、全要素に共通するプロパティのみを必須にします(一部の要素にしかないプロパティまで必須化すると、その要素自身が生成したSchemaに違反してしまうためです)。

型が混在する場合はtype配列、構造が異なる場合はanyOfで表現します

配列の要素やObject配列の同じプロパティで複数の型が出現する場合、単一の型として誤判定せず"type": ["boolean", "integer", "string"]のように表現します。Objectや配列とプリミティブ値が混在するなど、型配列では表現できない場合に限りanyOfを使います(排他性を保証できないためoneOfは使いません)。推論できない情報を勝手に補完することはありません(空配列の要素の型を推測しない、nullだけの値から元の型を推測しない、など)。

入力上限・ネスト深さの上限(Web Worker不使用)

入力は最大500,000文字、JSON構造のネストは最大64階層までを上限としています(JSON構文チェックと同じ上限です)。上限を超える入力は解析前に検出し、エラーとして表示します。通常の構造化されたJSONであれば上限内でも高速に処理できるため、現時点ではWeb Workerを使わずブラウザのメインスレッドで直接処理しています。

Schemaの検証・JSONへの変換・型生成は対象外です

本ツールはJSONサンプルからSchemaのたたき台を生成することに特化しています。生成したSchemaでデータを検証したい場合はJSON Schemaバリデーターを、JSONの構文チェックのみ行いたい場合はJSON構文チェックをご利用ください。OpenAPIへの直接変換・TypeScript等の型生成・Schemaの手動編集には対応していません。入力されたJSONを外部サーバーへ送信することもありません。

よくある質問

対応しているJSON Schema Draftは何ですか?

Draft 2020-12に固定しています。生成したSchemaには"$schema"としてDraft 2020-12のURIを含めます。複数Draftの選択には対応していません。

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

1件のサンプルJSONだけからは、そのプロパティが本当に必須かどうかを判定できないためです。「すべてのプロパティを必須(required)にする」をONにすると、サンプルに現れたプロパティを必須として出力します。配列要素ごとに構造が異なる場合は、全要素に共通するプロパティのみを必須にします。

配列内の型が混ざっている場合はどうなりますか?

単一の型として誤判定せず、"type": ["boolean", "integer", "string"]のように複数型で表現します。

anyOfとoneOfのどちらを使いますか?

Objectや配列とプリミティブ値が混在するなど、type配列では表現できない場合に限りanyOfを使います。oneOfは排他性(いずれか1つにしか一致しないこと)を保証できないため使用しません。

生成したSchemaをJSON Schema Validatorでそのまま使えますか?

はい。JSON Schema Validatorも既定でDraft 2020-12として検証するため、生成結果をそのまま貼り付けて確認できます。Pipeline機能を使えば、生成結果を直接送ることもできます。

不正なJSONを入力するとどうなりますか?

Schemaは生成されず、「JSONとして正しく解析できません」という表示とともに、可能な範囲で構文エラーの位置(行・列)と原因の目安を表示します。

入力サイズやネストの深さに上限はありますか?

はい。入力は最大500,000文字、ネストは最大64階層までです(JSON構文チェックと同じ上限です)。上限を超える入力は解析前にエラーとして表示します。