JSON Schema 推断

JSON Schema 推断工具,粘贴一份 JSON 样例,生成最合理的 JSON Schema(draft-07)。整数与浮点、必填属性、字符串格式(邮箱 / 日期 / UUID / 网址)与枚举都能识别;数组中的多个样例会递归合并,求同存异,而不是只看第一个元素。输入停顿 400ms 自动推断。

在工作台中打开 本地处理 · 数据不上传

怎么使用

  1. 1

    粘贴 JSON 样例

    把要建模的 JSON 粘贴到输入框,或点击「填入示例」快速体验;JSON 非法时会行内高亮出错位置。

  2. 2

    按需调整推断选项

    可设置 Schema 标题、是否把出现的属性全部标记为 required、是否识别字符串格式与枚举。

  3. 3

    停顿后自动推断

    停止输入约 400ms 即在 Worker 中生成 draft-07 Schema,连续修改只采纳最新结果,不会闪烁。

  4. 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)也能正确解析。

工具免费吗?需要登录吗?

免费,不用注册登录,也没有次数限制和广告。所有处理都在浏览器本地完成,数据始终只留在你的设备上。

相关工具