JSON Schema 推断
JSON Schema 推断工具,粘贴一份 JSON 样例,生成最合理的 JSON Schema(draft-07)。整数与浮点、必填属性、字符串格式(邮箱 / 日期 / UUID / 网址)与枚举都能识别;数组中的多个样例会递归合并,求同存异,而不是只看第一个元素。输入停顿 400ms 自动推断。
怎么使用
- 1
粘贴 JSON 样例
把要建模的 JSON 粘贴到输入框,或点击「填入示例」快速体验;JSON 非法时会行内高亮出错位置。
- 2
按需调整推断选项
可设置 Schema 标题、是否把出现的属性全部标记为 required、是否识别字符串格式与枚举。
- 3
停顿后自动推断
停止输入约 400ms 即在 Worker 中生成 draft-07 Schema,连续修改只采纳最新结果,不会闪烁。
- 4
复制或继续处理
复制 Schema;需要反向验证时可以直接切换到「Schema → JSON 示例」,同页完成。
功能特点
类型精确推断
整数推断为 integer、浮点为 number,布尔 / null / 字符串 / 对象 / 数组各自对应标准类型。
数组多样例合并
数组每个元素都是一条样例:对象属性取并集、required 取交集,同名字段递归合并,类型冲突时给出 anyOf。
必填属性标注
默认把样例中出现的属性写入 required,可以关闭;合并多个对象样例后只保留「每条样例都出现」的属性。
字符串格式识别
自动识别 date / date-time / email / uuid / uri 等格式并写入 format,合并后格式不一致时自动去除,避免误标。
枚举识别
数组项为 2–8 个互不相同的原始值时,自动在 items 上标注 enum。
Worker 内推断
推断在独立 Worker 线程里执行,主界面不阻塞,边改样例边看结果。
常见错误与排查
- ! 推断基于样例归纳,单份样例无法证明字段「可选」:样例里出现的字段默认都标 required,若接口字段可缺省请手工从 required 中移除。
- ! 空数组无法推断元素类型,items 会输出为空 schema {};请提供至少一条数组元素的样例。
- ! null 值会被推断为 null 类型;字段可能是字符串也可能为 null 时,给出两种样例即可合并为 type 数组。
- ! 生成结果为 draft-07;需要 draft 2020-12 等版本时可手工替换 $schema,多数关键字行为一致。
常见问题
JSON Schema 推断的结果准确吗?
结构层面(类型、嵌套、数组项)是确定可信的;「必填」「格式」「枚举」属于从有限样例的归纳,建议结合真实接口约定复核:单份样例里出现的字段未必 100% 必填,字符串也可能恰好长得像邮箱。可随时关闭对应的识别开关。
数组里的对象结构不一样怎么办?
工具会把数组全部元素当作多条样例合并:属性取并集、required 取交集、同名字段递归合并。例如 [{ "a": 1 }, { "b": "x" }] 会得到同时含 a、b 两个属性的 items,其中没有任何属性进入 required。
推断时数据会被上传吗?
不会。推断逻辑运行在浏览器本地的 Web Worker 中,站点没有后端服务与数据库,数据不会离开你的设备。
能从 JSON Schema 反过来生成 JSON 吗?
可以,同一工作台可以切换方向:Schema → JSON 示例会根据 type、format、const/enum/default 等关键字生成示例数据,本地 $ref(definitions / $defs)也能正确解析。
工具免费吗?需要登录吗?
免费,不用注册登录,也没有次数限制和广告。所有处理都在浏览器本地完成,数据始终只留在你的设备上。