JSON Schema 生成器

左側貼上 JSON,右側即時生成 Schema。

JSON Schema

使用方法

  1. 在左側貼上一段範例 JSON:物件、陣列或單個值都行。Schema 會隨輸入即時生成。
  2. 選擇 Schema 版本(Draft 7 或 2020-12),並可開關字串格式識別、示例值、以及是否把每個屬性都標記為必填。
  3. 複製或下載為 schema.json。內容不上傳:整份文件都在瀏覽器裡解析。

示例

範例 JSON

{
  "id": 42,
  "name": "Ada Lovelace",
  "email": "ada@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、開啟格式識別、全部屬性必填。郵箱字串被加上 format 提示;整數原樣保留;巢狀的 profile 變成獨立的物件 Schema。

規則、限制與已知問題

  • 型別由範例推斷:object、array、string、integer、number、boolean、null。陣列元素會被合併——多個物件時鍵取並集,僅當某鍵出現在所有元素裡才標記為必填。
  • 同一數組裡出現混合型別會用 anyOf 表達;空陣列只給出 type:array 且不帶 items(範例無法推斷元素型別)。
  • 字串格式(email、UUID、URI、date、date-time)按值猜測——只是提示,並非對所有可能取值都做校驗。可用開關關閉。
  • 重複鍵只保留最後一次,與 JSON.parse 一致。僅支援嚴格 JSON(RFC 8259):註解、尾隨逗號、單引號都會帶行列號報錯。
  • Schema 是標準 JSON,關鍵字與輸出不隨頁面語言改變。示例值按原值重建,因此超大整數(如 12345678901234567890)在示例裡可能被四捨五入。
  • 上限 100 萬字符、512 層巢狀:超過即報錯,不截斷。檔案上傳只讀取本地檔案內容,同樣不上傳。

拿到 Schema 之後,通常會需要這些工具。