JSONスキーマジェネレーター
1つまたは複数のJSONサンプルを貼り付けると、ジェネレーターが新しいペイロードの検証に使えるJSONスキーマを推論します。型を検出し、すべてのサンプルに現れるフィールドを必須としてマークし、値が小さな閉じた集合から取られている場合は列挙型(enum)を推論し、JSONスキーマ draft 2020-12 に準拠した出力を生成します。
JSONスキーマの生成方法
-
1
サンプルドキュメントを貼り付ける
1つまたは複数の実際のペイロードを用意します。バリエーションが多いほど、推論されるスキーマは正確になります。
-
2
ドラフトを選ぶ
draft 2020-12(現行)、draft 07(広くサポート)、または draft 04(レガシーな OpenAPI 向け)。
-
3
推論を調整する
enum推論の切り替え、必須フィールドの戦略(積集合か和集合か)、そしてサンプルが1つだけのときにすべてのフィールドを `required` としてマークするかどうかを設定します。
-
4
生成する
スキーマは `$schema`、`title`、`type`、`properties` とともに出力され、繰り返し現れるサブオブジェクトにはネストした `$ref` が付与されます。
推論が得意なこと
- 型: string、number、integer、boolean、null、array、object。
- null許容性: あるサンプルで
null、別のサンプルで文字列となるフィールドは["string", "null"]になります。 - 配列の要素: 同質な配列は単一の
itemsスキーマを、異質な配列はprefixItemsを生成します。 - 列挙型(enum): 観測された値がすべて小さな集合に収まる場合(設定可能、デフォルトは10種類の異なる値)、
enumを出力します。 - 必須: 複数のサンプルがある場合、キーの積集合が
requiredになります。サンプルが1つの場合は、オプトアウトしない限りすべてのキーが必須になります。 - フォーマット: ISO-8601 の日付、メールアドレス、URI に一致する文字列には
formatが推論されます。
推論では分からないこと
- 意図と例の違い: サンプル
age: 25からはtype: integerが推論されますが、nullも受け入れるかどうかまでは分かりません。エッジケースを網羅した複数のサンプルを渡してください。 - 制約:
minLength、maximum、patternなどは手動で追加する必要があります。推論はサンプルから上限・下限を推測しません。 - ビジネスロジック: 「この3つのフィールドのうち、ちょうど1つだけを設定する」といった条件には
oneOfが必要で、推論はできません。 - 参照: ジェネレーターはフラットなスキーマを出力します。繰り返される形状を
$defsに切り出したい場合は、生成後に行ってください。
出力例
1つのサンプルから:
{ "name": "Alice", "age": 30, "tags": ["admin", "user"] }
推論されたスキーマ(draft 2020-12):
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["name", "age", "tags"]
}
よくある間違い
- 1つのサンプルだけから推論する。 スキーマが過剰適合し、すべてのフィールドが必須になり、null が許容されなくなります。必ず5〜10件の多様なサンプルを与えてください。
numberのつもりでintegerを使う。 いずれかのサンプルに小数があれば推論される型はnumberに、すべて整数ならintegerになります。どちらもあり得るフィールドには、小数を含むサンプルを入れてください。- 任意フィールドを見落とす。 5件中4件に存在し1件で欠けているフィールドは任意になります(これは意図どおり)。もし5件すべてにたまたま含まれていると、実際にはAPI上で任意であっても、スキーマは必須としてマークします。
よくある質問
多いほど良いですが、通常は5〜10件の多様なサンプルがあれば妥当なスキーマが得られます。サンプルが1件だと、すべてのフィールドが必須になり、null許容性も推論できません。可能な限り複数のバリエーションを用意してください。
デフォルトは draft 2020-12 です。OpenAPI 3.0 との互換性のため(OpenAPI は draft 05/07 のサブセットを使用)、draft 07 と draft 04 も利用できます。
いいえ。サンプルから制約を推論するとスキーマが過剰適合してしまいます。minLength、maximum、pattern などは、生成後にビジネスルールに基づいて手動で追加してください。
はい。JSON配列を貼り付けると、ジェネレーターは各要素を個別のサンプルとして扱い、外側の配列ではなく個々の要素を記述するスキーマを生成します。外側の配列そのものの形状が欲しい場合は「配列コンテナとして扱う」をオンにしてください。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
EditorConfig ジェネレーター
インデントのスタイルとサイズ、改行コード、文字コード、空白ルールを指定して .editorconfig ファイルを生成し、IDE やエディタをまたいで書式を統一できます。
メールアドレス検証ツール
メールアドレスを検証します。RFC 5322構文チェック、MXレコードのライブ確認に加え、ローカル部、ドメイン、長さの詳細を表示します。メールは送信されません。
Markdownチートシート
見出し、リスト、表、コード、リンク、画像、GFM構文を、実際のプレビューとコピーできる例で確認できる実用的なMarkdownリファレンスです。
このツールは他の言語でも利用できます
- JSON-schemagenerator [SV]
- Générateur de schéma JSON [FR]
- JSON-schemagenerator [NL]
- เครื่องมือสร้าง JSON Schema [TH]
- Trình tạo JSON Schema [VI]
- مولّد مخطط JSON [AR]
- Generator JSON Schema [ID]
- Generador de Esquema JSON [ES]
- JSON 스키마 생성기 [KO]
- JSON-Schema-Generator [DE]
- Generator schematów JSON [PL]
- Gerador de Esquema JSON [PT]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]