JSON Schema を生成する方法
- 代表的な JSON の例を貼り付けます。複数の要素を持つ配列を使うと、要素が 1 つのスキーマに統合されるため、最も良い結果が得られます。
- スキーマのバージョン(draft 2020-12 または draft-07)を選び、プロパティを必須にするか、フォーマットを検出するか、追加のプロパティを禁止するかを設定します。
- スキーマをコピーまたはダウンロードし、説明や列挙値(enum)、最小値・最大値などを手作業で追加して仕上げます。
ジェネレーターが推定する内容
| JSON の例 | スキーマ |
|---|---|
"ada@example.com" | {"type": "string", "format": "email"} |
"2026-05-01T10:00:00Z" | format date-time(ほかに date、time、uri、uuid、ipv4) |
42 / 4.5 | "integer" / "number" |
| すべてのオブジェクトにあるキー | required に追加 |
| 一部の配列要素にないキー | 任意(required に含めない) |
[1, "a", null] | "items": {"type": ["string", "integer", "null"]} |
| オブジェクトと単純な値が混在 | 種類ごとのスキーマを持つ anyOf |
JSON Schema とは?
JSON Schema は、JSON データの構造を記述・検証するための仕様です。どのプロパティが存在し、それぞれがどの型で、どれが必須で、どんな値が許可されるかを定義します。OpenAPI での API 仕様、設定ファイル、フォームの自動生成、AI モデルの構造化出力の検証などに使われています。現在のバージョンは 2020-12 で、古いツールの多くは今も draft-07 をサポートしています。仕様は json-schema.org で公開されています。
生成したスキーマを仕上げる
titleとdescriptionを追加して、各フィールドの意味を記述します。enum、minimum、maximum、maxLength、patternで値を制限します。- 追加のプロパティを禁止(
additionalProperties: false)にチェックを入れると、未知のキーを拒否できます。 - データの検証には、JavaScript なら Ajv、Python なら
jsonschemaパッケージを使います。
よくある質問
どの JSON Schema バージョンを使うべきですか?
新しいプロジェクトには draft 2020-12 を使いましょう。現行のバージョンで、OpenAPI 3.1 のベースにもなっています。お使いのバリデーターやツールがまだ 2020-12 に対応していない場合は、draft-07 を選んでください。
すべてのプロパティが必須になるのはなぜですか?
サンプルのオブジェクトが 1 つだけだと、すべてのプロパティが存在するため、すべて必須としてマークされます。さまざまな例を含む配列を使うか、プロパティを必須にするをオフにしてください。
列挙値(enum)や値の範囲も検出できますか?
いいえ。1 つの例から一般に許可される値を判断することはできないため、enum、最小値・最大値、パターンは手作業で追加する必要があります。
スキーマで JSON を検証するには?
JavaScript なら Ajv、Python なら jsonschema などのバリデーターライブラリを使います。多くのコードエディタも、$schema プロパティで参照されたスキーマに基づいて JSON ファイルを検証できます。