JSON Schema 是一种基于 JSON 格式定义的数据校验规范(IETF标准),用于描述 JSON 数据的结构、类型和约束条件。它就像 JSON 的"蓝图"或"合同",定义了数据应该长什么样——每个字段是什么类型、是否必填、取值范围是什么。JSON Schema 本身也是 JSON 文档,因此可以用任何 JSON 解析器读取和处理。
JSON Schema 的核心价值在于数据契约:API 提供方和消费方可以通过 Schema 明确数据格式,减少沟通成本和运行时错误。它广泛应用于 REST API 文档(OpenAPI 规范)、表单验证、配置校验、数据迁移测试等开发场景。
本工具生成的 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年)引入了const、propertyNames等新关键字;Draft 7(2019年)新增了if/then/else条件校验、readOnly/writeOnly等语义标注。最新的 Draft 2019-09 和 Draft 2020-12 引入了更强大的递归引用($recursiveRef)和注释功能。本工具目前生成 Draft 7 格式,兼容性最佳。
Schema 推断的局限性:自动推断生成的 Schema 是"保守"的——它基于已有数据推断规则,但无法预见未来可能出现的所有数据变体。例如,如果示例中所有 age 字段都是整数,工具会推断为integer,但如果实际数据中偶尔出现字符串"unknown",就会在校验时报错。因此建议将自动生成的 Schema 作为起点,根据业务知识补充anyOf、default等边界处理。
相关生态工具:生成 Schema 后,可以配合 AJV(Node.js 最快的校验库)、jsonschema(Python)、gojsonschema(Go)等库进行运行时校验。OpenAPI 3.0 规范直接使用 JSON Schema Draft 5 子集描述数据模型。Postman 也支持导入 JSON Schema 自动生成请求 Body 的 Mock 数据。本工具生成的 Schema 与这些工具完全兼容。
JSON Schema 是一种基于 JSON 格式定义的数据校验规范,用于描述 JSON 数据的结构、类型和约束条件。它就像 JSON 的"蓝图",可以验证数据是否符合预期格式,广泛应用于 API 接口文档、表单校验、数据迁移等场景。
本工具通过分析 JSON 示例的数据类型自动推断 Schema 定义。对于单个示例,推断结果是确定性的;对于多个示例,工具会合并类型信息生成更宽松的 Schema。建议在生成后根据实际情况手动微调,特别是枚举值和格式约束等细节。
支持。工具会递归解析嵌套对象和多维数组,自动推断每一层的类型结构。对于数组,工具会分析所有元素并推断统一的 items 类型;如果元素类型不一致,会生成 anyOf 联合类型。
目前支持 JSON Schema Draft 7(最广泛兼容的版本)。Draft 7 被大多数现代校验库和 API 框架支持,包括 AJV、FastAPI、Spring Boot 等。
不会。所有处理都在浏览器本地完成,您的 JSON 数据不会离开您的设备。您可以放心粘贴包含敏感信息的 JSON 示例。
由于纯前端处理,限制主要取决于浏览器内存。通常可以处理几 MB 以内的 JSON 文件。对于超大文件,建议先提取代表性的数据样本进行 Schema 推断,再手动扩展到完整结构。
当提供多个 JSON 示例时,工具可以分析每个对象中哪些字段在所有示例中都存在。如果某个字段在所有示例中都出现,工具会将其标记为 required(必填)。这有助于生成更严格的 Schema 定义,减少运行时校验失败。
当某个字段在示例中取值种类较少(通常不超过5种不同值),且值本身就是简短字符串或整数时,工具会自动推断为 enum 枚举类型。例如"status"字段如果只有"active"和"inactive"两种值,就会生成{"enum": ["active", "inactive"]}。