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 数据再使用本工具。