使い方
- JSON のサンプルを貼り付けるか、「サンプルを読み込む」をクリックします。
- ルートスキーマのタイトルを設定します。
- スキーマをコピーまたはダウンロードし、format、pattern、値の範囲などの制約を追加します。
オプションの説明
- ルート型の名前
- スキーマの title として使われます。
例
{"id": 1, "email": null} からは、"id": {"type": "integer"} と "email": {"type": "null"} を持ち、両方のキーが required に入ったスキーマが作られます。
例
メールがあるのは 1 件目だけで、manager が null のことがある、2 つのユーザーレコードです。
[
{ "id": 1, "name": "Ada", "email": "ada@example.com", "tags": ["admin"], "manager": null },
{ "id": 2, "name": "Grace", "tags": [], "manager": { "id": 1 } }
]
ルートの型名を User にすると、生成されるスキーマは次のとおりです。
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "User",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"email": { "type": "string" },
"tags": { "type": "array", "items": { "type": "string" } },
"manager": {
"anyOf": [
{ "type": "null" },
{ "type": "object", "properties": { "id": { "type": "integer" } }, "required": ["id"] }
]
}
},
"required": ["id", "name", "tags", "manager"]
}
}
email は 2 件目のレコードにないので required に含まれません。manager は、サンプルに null とオブジェクトの両方があるため、どちらも受け付けます。サンプルデータが多様なほどスキーマは正確になるので、1 件ではなく複数のレコードを貼り付けてください。
よくある使い方
API 入力の検証。 スキーマを Ajv (JavaScript) や jsonschema (Python) などのバリデーターに読み込み、一致しないリクエストを拒否します。
API のドキュメント化。 プロパティを OpenAPI の components.schemas セクションに貼り付けて、たたき台にします。
エディターの入力補完。 VS Code や JetBrains の IDE は JSON Schema を使って、JSON の設定ファイルでキーを提案したり、間違いを指摘したりできます。
よくある質問
どのキーが必須(required)になりますか?
すべてのサンプルオブジェクトに含まれるキーです。配列に異なるキーを持つオブジェクトが含まれる場合、一部の要素にないキーは required から除外されます。
OpenAPI で使えますか?
OpenAPI 3.1 は JSON Schema 2020-12 を使用しているため、生成したスキーマを components/schemas の下にそのまま置けます。OpenAPI 3.0 の場合は、["string", "null"] のような type の配列を nullable true に置き換えてください。
email や date-time などの format を検出しますか?
いいえ。推測するのは型だけです。必要に応じて format、pattern、minimum などのキーワードを手動で追加してください。
JSON はアップロードされますか?
いいえ。スキーマはブラウザ内で生成されるため、実データを含む API レスポンスも端末の外に出ません。
プライバシー
このツールはすべてブラウザ内で動作します。ファイルやテキストはお使いの端末上で処理され、当サイトのサーバーにアップロードされることはありません。