JSON Schema 生成器

根據 JSON 數據自動生成符合規範的 JSON Schema 定義

JSON 輸入
行數: 1 | 字符: 0
JSON Schema 輸出
// 輸入 JSON 後自動生成 JSON Schema
屬性: 0 | 行數: 1

配置選項說明

Schema ID
設置 Schema 的唯一標識符,通常使用 URI 格式,用於在大型系統中引用和識別 Schema
所有字段必填
啟用後,所有屬性都會被添加到 required 數組中,表示這些字段在數據中必須存在
添加默認值
根據示例 JSON 中的實際值自動生成 default 屬性,適用於配置文件等需要默認值的場景
添加字段描述
自動為每個屬性添加 description 字段,描述該字段的數據類型和來源,便於文檔生成
嚴格模式
啟用 additionalProperties: false,禁止出現 Schema 中未定義的額外屬性,確保數據結構嚴格一致

什麼是 JSON Schema?

JSON Schema 是一種用於描述和驗證 JSON 數據結構的規範。它定義了 JSON 文檔應有的結構、數據類型、約束條件等規則,廣泛應用於 API 數據驗證、表單驗證、配置文件校驗等場景。

通過 JSON Schema,您可以:

  • 數據驗證:驗證 JSON 數據是否符合預期的格式和約束
  • 文檔生成:為 API 自動生成文檔和類型定義
  • 代碼提示:在 IDE 中獲得智能補全和類型檢查
  • 自動化測試:在測試中自動驗證響應數據格式

本工具支持 JSON Schema Draft-07 規範,能夠智能推斷嵌套對象、數組類型、枚舉值等複雜結構,幫助您快速創建標準化的 Schema 定義。

使用方法

  1. 在左側輸入框粘貼 JSON 數據,或點擊示例按鈕加載示例數據
  2. 配置生成選項:設置 Schema ID、選擇是否所有字段必填、是否添加默認值等
  3. 右側自動生成對應的 JSON Schema 定義
  4. 點擊「複製」按鈕複製生成的 Schema 到剪貼板
  5. 將 Schema 用於 API 验证、表單校驗或配置文件校驗等場景

使用實例

簡單對象 Schema

输入 JSON:
{
  "name": "张三",
  "age": 28,
  "isActive": true
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "description": "Object with 3 properties",
  "properties": {
    "name": {
      "type": "string",
      "description": "String value"
    },
    "age": {
      "type": "integer",
      "description": "Number value"
    },
    "isActive": {
      "type": "boolean",
      "description": "Boolean value"
    }
  },
  "required": ["name", "age", "isActive"]
}

嵌套對象與數組

输入 JSON:
{
  "user": {
    "id": 1,
    "profile": {
      "avatar": "url",
      "skills": ["JS", "TS"]
    }
  }
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user": {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "profile": {
          "type": "object",
          "properties": {
            "avatar": { "type": "string" },
            "skills": {
              "type": "array",
              "items": { "type": "string" }
            }
          }
        }
      }
    }
  }
}

數據驗證示例

使用 Ajv 验证数据:

const Ajv = require('ajv');
const ajv = new Ajv();

const schema = { /* 生成的 Schema */ };
const validate = ajv.compile(schema);

const validData = { name: "李四", age: 25, isActive: false };
const invalidData = { name: "王五", age: "三十" };

console.log(validate(validData));    // true
console.log(validate(invalidData));  // false
console.log(validate.errors);        // 错误详情

常見問題 (FAQ)

Q: JSON Schema 有哪些常見應用場景?

A: JSON Schema 主要用於:API 請求/響應驗證、表單數據校驗、配置文件格式檢查、數據庫文檔約束、自動化測試數據驗證、IDE 智能提示配置等。它是現代 Web 開發中數據規範的重要工具。

Q: 生成的 Schema 版本是什麼?

A: 本工具生成的 Schema 遵循 JSON Schema Draft-07 規範,這是目前最廣泛支持的版本,兼容大多數驗證庫和工具鏈。

Q: 如何處理複雜的數組類型?

A: 工具會自動分析數組元素的結構。如果數組元素是對象,會生成 items 定義;如果元素類型不一致,會使用 anyOf 或 oneOf 表示多種可能的類型;空數組則生成空 items 定義。

Q: required 字段是什麼意思?

A: required 是一個字符串數組,列出必須存在的屬性名。如果某個屬性在 required 中,則驗證時該屬性不能缺失。未在 required 中的屬性為可選屬性。

Q: 如何在項目中使用生成的 Schema?

A: 可以使用 Ajv、jsonschema 等驗證庫進行數據校驗。在 Node.js 中:const Ajv = require('ajv'); const validate = new Ajv().compile(schema); const valid = validate(data);。前端框架如 React、Vue 也有對應的表單驗證組件支持 JSON Schema。

Q: additionalProperties: false 有什麼作用?

A: 這個設置禁止數據中出現 Schema 未定義的額外屬性。這在需要嚴格控制數據結構的場景很有用,可以防止意外字段污染數據,但也可能過於嚴格導致兼容性問題。

Q: 能否為字段添加自定義驗證規則?

A: 生成後可以手動編輯 Schema 添加更多約束。JSON Schema 支持豐富的驗證關鍵字:minimum/maximum(數值範圍)、minLength/maxLength(字符串長度)、pattern(正則匹配)、enum(枚舉值)、format(預定義格式如 email、uri)等。

Q: 如何從 TypeScript 類型生成 JSON Schema?

A: 本工具是從 JSON 數據推斷 Schema。如果需要從 TypeScript 類型生成 Schema,可以使用 typescript-json-schema 等工具,或先創建示例 JSON 數據再使用本工具。