JSON Schema 生成
左に JSON を貼り付けると、右にスキーマが表示されます。入力と同時に更新されます。
JSON Schema
使い方
- 左側にサンプルの JSON 文書を貼り付けてください。オブジェクト、配列、単一の値のいずれでもかまいません。スキーマは入力と同時に生成されます。
- スキーマのバージョン(Draft 7 または 2020-12)を選び、文字列の形式判定、例の値の出力、すべてのプロパティを必須にするかどうかを切り替えます。
- 結果をコピーするか schema.json としてダウンロードします。何もアップロードされず、文書全体がブラウザ内で解析されます。
例
サンプル JSON
{ "id": 42, "name": "佐藤 花子", "email": "hanako@example.com", "active": true, "tags": ["admin", "editor"], "profile": { "score": 4.5, "verified": false } }
JSON Schema
{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "email": { "type": "string", "format": "email" }, "active": { "type": "boolean" }, "tags": { "type": "array", "items": { "type": "string" } }, "profile": { "type": "object", "properties": { "score": { "type": "number" }, "verified": { "type": "boolean" } }, "required": ["score", "verified"], "additionalProperties": false } }, "required": ["id", "name", "email", "active", "tags", "profile"], "additionalProperties": false }
既定のルール(Draft 7、形式判定オン、すべてのプロパティを必須)で生成した例です。メールアドレスの文字列には形式のヒントが付き、整数は正確なまま、ネストした profile は独立したオブジェクトのスキーマになります。
ルール・制限・既知の問題
- 型はサンプルから推論します(object、array、string、integer、number、boolean、null)。配列の項目は統合され、要素をまたいでオブジェクトのキーは合併されます。一部の要素にないキーは必須扱いになりません。
- 1 つの配列内で型が混在する場合は anyOf になります。空の配列は items のない type:array になります(サンプルから要素の型はわかりません)。
- 文字列の形式(email、UUID、URI、date、date-time)は値から推測したヒントであり、すべての値に対する検証ではありません。切り替えでオフにできます。
- 重複キーは JSON.parse と同様に最後の値が残ります。厳密な JSON(RFC 8259)のみに対応し、コメント、末尾のカンマ、単一引用符は行・列付きのメッセージで拒否します。
- スキーマは標準の JSON なので、キーワードや出力がページの言語で変わることはありません。例の値はネイティブに再構築するため、極端に大きな整数(12345678901234567890 など)は例の値だけ丸められることがあります。
- 制限: 100 万文字、ネスト 512 階層です。いずれかを超えるとエラーになり、結果が切り捨てられることはありません。ファイルの読み込みはローカルのファイルだけを読み、何もアップロードしません。
関連ツール
スキーマができたあとによく使われるツールです。