Skip to content
data2026-07-252 分钟阅读

什么是 JSON Schema

JSON Schema 是一个用于描述和验证 JSON 数据结构的标准。它定义了 JSON 对象的属性、类型、约束和默认值。

示例 JSON Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "age": { "type": "integer", "minimum": 0 },
    "email": { "type": "string", "format": "email" },
    "tags": { "type": "array", "items": { "type": "string" } }
  },
  "required": ["name", "email"]
}

为什么需要 JSON Schema

  1. API 文档:自动生成 API 请求/响应的结构文档
  2. 数据验证:在运行时验证 JSON 数据的正确性
  3. 表单生成:基于 Schema 自动生成表单 UI
  4. Mock 数据:根据 Schema 生成测试数据
  5. 类型安全:为 TypeScript 接口生成类型定义
  6. 配置验证:验证配置文件的格式是否正确

JSON Schema 核心关键字

| 关键字 | 说明 | 示例 | |--------|------|------| | type | 数据类型 | "string", "number", "boolean", "array", "object" | | properties | 对象属性 | { "name": { "type": "string" } } | | required | 必填字段 | ["name", "email"] | | minimum/maximum | 数值范围 | "minimum": 0, "maximum": 100 | | minLength/maxLength | 字符串长度 | "minLength": 1, "maxLength": 255 | | enum | 枚举值 | ["active", "inactive", "pending"] | | format | 格式验证 | "email", "uri", "date-time" | | items | 数组元素类型 | { "type": "string" } |

如何使用在线工具

使用 DevToolkit Pro 的 JSON Schema 生成器

  1. 粘贴一个 JSON 对象示例
  2. 工具自动分析数据结构
  3. 生成完整的 JSON Schema
  4. 支持自定义约束(必填、范围等)
  5. 一键复制 Schema 代码

从 JSON 示例自动生成

输入

{
  "id": 1,
  "name": "张三",
  "email": "zhang@example.com",
  "isActive": true,
  "tags": ["developer", "admin"],
  "address": {
    "city": "上海",
    "zip": "200000"
  }
}

输出 Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "id": { "type": "integer" },
    "name": { "type": "string" },
    "email": { "type": "string" },
    "isActive": { "type": "boolean" },
    "tags": { "type": "array", "items": { "type": "string" } },
    "address": {
      "type": "object",
      "properties": {
        "city": { "type": "string" },
        "zip": { "type": "string" }
      }
    }
  }
}

代码中的 JSON Schema 验证

JavaScript(Ajv)

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

const schema = {
  type: 'object',
  properties: {
    name: { type: 'string', minLength: 1 },
    age: { type: 'integer', minimum: 0 }
  },
  required: ['name']
};

const validate = ajv.compile(schema);
const valid = validate({ name: '张三', age: 28 });
console.log(valid); // true

Python

from jsonschema import validate, ValidationError

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string", "minLength": 1},
        "age": {"type": "integer", "minimum": 0}
    },
    "required": ["name"]
}

try:
    validate(instance={"name": "张三", "age": 28}, schema=schema)
    print("验证通过")
except ValidationError as e:
    print(f"验证失败: {e.message}")

FAQ

JSON Schema 支持哪些版本?

当前最常用的是 Draft 7(2018-02)和 2020-12 版本。Draft 7 兼容性最好,建议优先使用。大部分验证库都支持 Draft 7。

Schema 和 TypeScript 接口可以互转吗?

可以。使用 typescript-json-schema 从 TS 生成 Schema,或使用 json-schema-to-typescript 从 Schema 生成 TS 接口。工具可自动化这个过程。

JSON Schema 能验证嵌套对象吗?

可以。JSON Schema 天然支持嵌套对象定义,使用递归的 properties 描述深层结构。也支持 $ref 关键字引用已定义的子 Schema,避免重复定义。


本文由 DevToolkit Pro 提供。更多开发者工具请访问 首页


ad