无需登录 数据私有 本地保存

JSON Schema生成器 - 从JSON数据推断结构

17
0
0
0
🧬

JSON Schema 生成器

从 JSON 数据智能推断结构,生成标准 JSON Schema
版本:
JSON 数据输入
就绪
生成的 JSON Schema
等待生成...

常见问题与知识点

JSON Schema 是一种声明性语言,用于描述 JSON 数据的结构和约束条件。它就像 JSON 数据的"类型定义"。主要用途包括:

数据验证:确保 API 请求/响应符合预期格式
文档生成:自动生成 API 文档(如配合 Swagger/OpenAPI)
代码生成:根据 Schema 自动生成 TypeScript 类型、表单等
配置校验:校验配置文件(如 package.json、CI/CD 配置)的正确性
数据契约:前后端之间的数据格式约定

手动编写 JSON Schema 既耗时又容易出错,特别是对于结构复杂的 JSON 数据。使用推断工具可以:

🔹 快速起步:自动生成 Schema 草稿,再手动微调
🔹 反向工程:从现有 API 响应推导数据结构
🔹 学习参考:了解如何为特定数据结构编写 Schema
🔹 提高效率:几秒内完成原本需要数十分钟的手写工作
🔹 减少错误:避免手动编写时的拼写和结构错误

required 数组列出了对象中必须存在的属性名。如果 JSON 数据缺少 required 中的属性,验证将失败。

additionalProperties 控制对象是否允许包含 Schema 中未定义的额外属性:
• 设为 true(默认):允许任意额外属性
• 设为 false(严格模式):不允许任何额外属性,验证更严格
• 设为 Schema 对象:额外属性必须符合指定的类型

💡 最佳实践:API 开发中建议使用 additionalProperties: false 来捕获拼写错误。

目前最常用的版本:

Draft-07(2019年):
• 最广泛支持的版本,兼容性最好
• 使用 "definitions" 存放可复用 Schema 片段
• 被 OpenAPI 3.0、Ajv 等主流工具支持

Draft 2020-12
• 最新稳定版本,功能更丰富
• 使用 "$defs" 替代 "definitions"
• 新增 prefixItemsunevaluatedProperties 等关键字
• 支持动态引用和更灵活的条件验证

💡 建议:新项目优先使用 Draft 2020-12,需兼容旧工具时选择 Draft-07。

有多种方式验证 JSON Schema:

🔸 JavaScript/Node.js:使用 Ajv 库(最流行的 JSON Schema 验证器)
🔸 Python:使用 jsonschema
🔸 在线工具:JSON Schema Validator 网站可直接粘贴验证
🔸 VS Code:在 settings.json 等配置文件中内置了 Schema 验证
🔸 命令行:使用 ajv-cli 进行批量验证

示例(Ajv):
const ajv = new Ajv();
const valid = ajv.validate(schema, data);

自动推断并非完美,存在以下局限:

⚠️ 样本偏差:仅基于提供的 JSON 样本,可能遗漏某些可选字段
⚠️ 类型精度:整数和浮点数在 JSON 中无法区分(都是 number)
⚠️ 语义缺失:无法推断 format(如 email、date-time)、minLengthpattern 等约束
⚠️ 枚举遗漏:如果样本未覆盖所有枚举值,Schema 不会包含 enum
⚠️ 空数组:无法推断数组元素类型

💡 建议:将推断结果作为起点,根据业务需求手动补充约束条件。