在线JSON Schema生成器

广告位 - 顶部 (728×90)

JSON 示例

生成的JSON Schema

Schema将显示在这里...
广告位 - 中部 (728×90)

JSON Schema 知识

什么是 JSON Schema?

JSON Schema 是一种基于 JSON 格式定义的数据校验规范(IETF标准),用于描述 JSON 数据的结构、类型和约束条件。它就像 JSON 的"蓝图"或"合同",定义了数据应该长什么样——每个字段是什么类型、是否必填、取值范围是什么。JSON Schema 本身也是 JSON 文档,因此可以用任何 JSON 解析器读取和处理。

JSON Schema 的核心价值在于数据契约:API 提供方和消费方可以通过 Schema 明确数据格式,减少沟通成本和运行时错误。它广泛应用于 REST API 文档(OpenAPI 规范)、表单验证、配置校验、数据迁移测试等开发场景。

支持的 Schema 关键字

本工具生成的 Schema 包含以下关键字:

$schema — 声明使用的 JSON Schema 版本

type — 数据类型(string/number/integer/boolean/array/object/null)

properties — 对象的属性定义

required — 必填字段列表

items — 数组元素的类型定义

anyOf — 联合类型(当字段在不同示例中类型不一致时使用)

enum — 枚举值(当字段取值范围较小时自动推断)

examples — 示例值(可选)

使用教程

本JSON Schema生成器操作简单且功能完善,以下是详细的使用指南:

单示例模式:在左侧输入框中粘贴一个JSON对象示例。工具会分析每个字段的数据类型,自动推断并生成对应的JSON Schema定义。例如,字符串字段生成{"type": "string"},数值字段生成{"type": "number"},嵌套对象会递归解析并生成properties结构。

多示例模式(推荐):将多个JSON对象放入一个JSON数组中,如[{"name":"A","age":1},{"name":"B","age":2}]。工具会分析所有示例,对出现在每个对象中的字段标记为required,对类型不一致的字段生成anyOf联合类型。多示例模式生成的Schema更准确、更严格。

配置选项:开启「推断必填字段」后,工具会统计每个字段在所有示例中的出现频率,100%出现的字段会被加入required数组。开启「包含示例值」后,每个字段会附带一个examples数组,方便API文档阅读者理解字段含义。Schema版本下拉框可选择Draft 4/6/7,Draft 7是目前最广泛支持的标准。

查看结果:生成的Schema会显示在右侧输出区域,带有语法高亮。点击「复制Schema」可将结果复制到剪贴板,点击「下载JSON」可保存为.json文件。如果输入的JSON格式有误,工具会显示红色的错误提示并指出具体位置。

应用场景

JSON Schema 在现代软件开发中应用广泛,以下是几个典型的使用场景:

API接口文档自动化:在前后端协作中,接口返回数据的格式经常变化。开发者可以先收集几个真实的API响应样本,使用本工具自动生成Schema定义,再将Schema嵌入Swagger/OpenAPI文档中。这样API文档始终与实际数据结构保持一致,减少因文档滞后导致的联调问题。

表单数据校验:Web应用中的用户输入表单可以通过JSON Schema进行结构化校验。例如用户注册表单,可以定义姓名必须为字符串且长度在2-50之间、年龄必须为整数且范围在1-150之间。本工具生成的Schema可以直接对接AJV、jsonschema等校验库,快速搭建表单验证逻辑。

配置项校验与CI/CD:微服务架构中,每个服务的配置文件(如 application.json、settings.json)都需要符合预期的结构。将Schema纳入CI流程,可以在部署前自动检测配置错误。本工具可以帮助运维团队从现有配置样本快速生成校验Schema,确保生产环境配置的正确性。

扩展知识

JSON Schema 的发展历程:JSON Schema 由 IETF 标准化,经历了多个版本的演进。Draft 4(2013年发布)奠定了基本框架;Draft 6(2017年)引入了constpropertyNames等新关键字;Draft 7(2019年)新增了if/then/else条件校验、readOnly/writeOnly等语义标注。最新的 Draft 2019-09 和 Draft 2020-12 引入了更强大的递归引用($recursiveRef)和注释功能。本工具目前生成 Draft 7 格式,兼容性最佳。

Schema 推断的局限性:自动推断生成的 Schema 是"保守"的——它基于已有数据推断规则,但无法预见未来可能出现的所有数据变体。例如,如果示例中所有 age 字段都是整数,工具会推断为integer,但如果实际数据中偶尔出现字符串"unknown",就会在校验时报错。因此建议将自动生成的 Schema 作为起点,根据业务知识补充anyOfdefault等边界处理。

相关生态工具:生成 Schema 后,可以配合 AJV(Node.js 最快的校验库)、jsonschema(Python)、gojsonschema(Go)等库进行运行时校验。OpenAPI 3.0 规范直接使用 JSON Schema Draft 5 子集描述数据模型。Postman 也支持导入 JSON Schema 自动生成请求 Body 的 Mock 数据。本工具生成的 Schema 与这些工具完全兼容。

常见问题 (FAQ)

JSON Schema 是什么?

JSON Schema 是一种基于 JSON 格式定义的数据校验规范,用于描述 JSON 数据的结构、类型和约束条件。它就像 JSON 的"蓝图",可以验证数据是否符合预期格式,广泛应用于 API 接口文档、表单校验、数据迁移等场景。

生成的Schema准确吗?

本工具通过分析 JSON 示例的数据类型自动推断 Schema 定义。对于单个示例,推断结果是确定性的;对于多个示例,工具会合并类型信息生成更宽松的 Schema。建议在生成后根据实际情况手动微调,特别是枚举值和格式约束等细节。

支持嵌套对象和数组吗?

支持。工具会递归解析嵌套对象和多维数组,自动推断每一层的类型结构。对于数组,工具会分析所有元素并推断统一的 items 类型;如果元素类型不一致,会生成 anyOf 联合类型。

支持哪些 JSON Schema 版本?

目前支持 JSON Schema Draft 7(最广泛兼容的版本)。Draft 7 被大多数现代校验库和 API 框架支持,包括 AJV、FastAPI、Spring Boot 等。

数据会上传到服务器吗?

不会。所有处理都在浏览器本地完成,您的 JSON 数据不会离开您的设备。您可以放心粘贴包含敏感信息的 JSON 示例。

可以处理多大的 JSON 文件?

由于纯前端处理,限制主要取决于浏览器内存。通常可以处理几 MB 以内的 JSON 文件。对于超大文件,建议先提取代表性的数据样本进行 Schema 推断,再手动扩展到完整结构。

什么是必填字段推断?

当提供多个 JSON 示例时,工具可以分析每个对象中哪些字段在所有示例中都存在。如果某个字段在所有示例中都出现,工具会将其标记为 required(必填)。这有助于生成更严格的 Schema 定义,减少运行时校验失败。

枚举值是如何推断的?

当某个字段在示例中取值种类较少(通常不超过5种不同值),且值本身就是简短字符串或整数时,工具会自动推断为 enum 枚举类型。例如"status"字段如果只有"active"和"inactive"两种值,就会生成{"enum": ["active", "inactive"]}

广告位 - 底部 (728×90)