JSON Schema 生成

左に JSON を貼り付けると、右にスキーマが表示されます。入力と同時に更新されます。

JSON Schema

使い方

  1. 左側にサンプルの JSON 文書を貼り付けてください。オブジェクト、配列、単一の値のいずれでもかまいません。スキーマは入力と同時に生成されます。
  2. スキーマのバージョン(Draft 7 または 2020-12)を選び、文字列の形式判定、例の値の出力、すべてのプロパティを必須にするかどうかを切り替えます。
  3. 結果をコピーするか 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 階層です。いずれかを超えるとエラーになり、結果が切り捨てられることはありません。ファイルの読み込みはローカルのファイルだけを読み、何もアップロードしません。

スキーマができたあとによく使われるツールです。