从 JSON 数据自动生成 JSON Schema 并进行类型推断
工具功能
- 智能类型推断: 从 JSON 值自动检测数据类型,包括字符串、数字、布尔值、数组、对象和 null,智能检测 email、URL、日期、时间等格式
- 多版本支持: 支持 JSON Schema Draft 2020-12、2019-09、Draft-07 和 Draft-04,提供正确的 $schema URI 和版本特定功能
- 验证规则: 配置必填字段、类型约束、格式验证和严格模式,使用 additionalProperties 控制实现强大的 schema 定义
- 灵活配置: 根据 API 文档和验证需求,选择包含或排除字段描述、示例和严格验证规则
使用方法
- 输入 JSON 数据: 粘贴您的示例 JSON 数据或加载示例开始
- 配置选项: 选择 Schema 版本,启用必填字段、描述和其他选项
- 生成 Schema: 点击生成以创建具有自动类型推断的 JSON Schema
- 使用 Schema: 复制或下载生成的 schema 用于 API 验证或文档
生成原理
JSON Schema 规范
JSON Schema 是用于描述 JSON 数据结构和验证规则的声明性语言。它使用 'type'、'properties'、'required'、'items' 和 'additionalProperties' 等关键字来定义约束。该规范经历了多个草案版本的演进,Draft 2020-12 是最新的稳定版本。Schema 本身是有效的 JSON 文档,可用于验证、文档化和代码生成。
类型推断算法
生成器分析 JSON 值以推断适当的 schema 类型。对于原始值,它检测 string、number、integer、boolean 或 null。对于字符串,它使用正则表达式模式应用格式检测,识别 email、uri、date、time、ipv4、ipv6 和其他标准格式。对于对象,它递归生成带有属性定义的嵌套 schema。对于数组,它从第一个元素推断 schema。
验证关键字
JSON Schema 提供丰富的验证关键字:'type' 用于数据类型,'required' 用于必填字段,'properties' 用于对象 schema,'items' 用于数组,'minimum'/'maximum' 用于数字,'minLength'/'maxLength' 用于字符串,'pattern' 用于正则验证,'enum' 用于允许值,'format' 用于语义验证如 email 或 URL。这些关键字组合创建全面的验证规则。
常见问题
- 什么是JSON Schema,为什么要使用它?
- JSON Schema是一种用于注释和验证JSON文档的词汇表。它使用JSON格式本身描述数据结构、约束和验证规则。优势包括:自动数据验证、API文档、代码生成、改善开发者体验和基于契约的开发。它广泛用于API设计、配置验证和表单生成。
- 这个工具可以从任何JSON生成schema吗?
- 可以!此工具分析任何有效的JSON输入并生成相应的JSON Schema Draft-07兼容schema。它处理所有JSON数据类型:对象、数组、字符串、数字、布尔值和null。它从您的示例数据推断类型、必填字段和基本模式。对于复杂场景,您可能需要手动优化生成的schema。
- 生成的schema有多准确?
- 生成器基于样本数据分析创建schema。它准确识别数据类型和结构,但对约束做保守假设。例如,它不会知道数字是否应该只为正数,或字符串是否必须匹配特定模式,除非这些约束出现在所有样本中。始终使用您的领域特定验证规则审查和增强生成的schema。
- 我可以使用生成的schema进行验证吗?
- 当然!生成的schema完全兼容JSON Schema验证器,如Ajv、joi或json-schema库。您可以使用它验证API请求/响应、配置文件或用户输入。该schema遵循JSON Schema Draft-07规范,可以集成到Node.js、Python、Java或任何支持JSON Schema的语言中。
- 不同JSON Schema草案之间有什么区别?
- JSON Schema经历了多个草案演变(Draft-04、Draft-06、Draft-07、2019-09、2020-12)。此工具生成广泛支持的Draft-07 schema。主要区别:Draft-07添加了if/then/else条件,Draft 2019-09引入词汇系统,Draft 2020-12添加unevaluatedProperties。对于大多数用途,Draft-07提供出色的兼容性和功能集。
相关文档
- JSON Schema 官方网站 - JSON Schema 官方规范和文档
- 理解 JSON Schema - JSON Schema 概念和用法的综合指南
- JSON Schema Draft 2020-12 - 最新的 JSON Schema 规范文档
- JSON Schema 验证器 - 在线工具用于验证 JSON 是否符合 schema
- OpenAPI 和 JSON Schema - JSON Schema 在 OpenAPI 规范中的使用方式