实用工具

JSON 转 JSON Schema 生成器

从 JSON 样例推断 JSON Schema,可切换 OpenAI 严格模式,直接用于结构化输出和函数调用。

浏览器本地运行AI 开发工具1.4万
免费

输入

0 B

结果

结果会显示在这里。

结构化输出和函数调用都要一份 JSON Schema,而给嵌套很深的 API 响应手写 Schema 既慢又容易写出细微的错误。粘贴一份真实样例——最好是包含多条记录的数组——就能拿到 Schema。推断会合并看到的每一个样本:某条记录缺了的键会变成可选,有时是 null 的值会变成可空,始终是 ISO 时间戳的字段会标上 format: date-time。打开严格模式,结果会改写成 OpenAI Structured Outputs 能接受的子集。

它是怎么工作的

  • 推断逻辑是本工具自己写的,没有用 quicktype,因为它生成的 Schema 会把嵌套对象藏在按猜测类型命名的 $ref 定义后面,不适合直接贴进函数定义。
  • $schema 可选 2020-12 或 draft-07;对象都是内联写出的,所以除了这一行,两种版本的内容完全一样。
  • 严格模式会把所有属性列进 required、把可选属性改成可空、给每个对象加 additionalProperties: false,非对象的根会包到 items 键下,OpenAI 文档没列出的 format(比如 uri)会被去掉。

你的数据去了哪里

哪也没去。本工具完全在你的浏览器里运行:你粘贴的文本由页面处理,不会传输到任何服务器,也不会写进任何日志。

本工具免费且无需登录,运行结果只存在于你当前的页面里,不会被保存到任何地方。

它要花多少

本工具完全免费,不需要登录,也不消耗积分。

常见问题

某个字段几乎每条记录都有,为什么还是可选?
因为至少有一个样本里缺了它,而 Schema 描述的是你的数据实际的样子。如果这个字段确实必填,那缺字段的那条样本本身就是问题所在。把那条记录从输入里删掉重新生成,或者事后手动把它加进 required。
OpenAI 严格模式有哪些要求?
每个属性都必须出现在 required 里,每个对象都要设置 additionalProperties 为 false,根必须是对象,不能是数组或 anyOf。可选的值用包含 null 的类型来表达。字符串 format 只支持 date-time、date、time、duration、email、hostname、ipv4、ipv6 和 uuid,所以这里在严格模式下会去掉 uri。
严格模式为什么对空数组报错?
空数组对推断来说没有任何关于元素类型的信息,而严格模式不接受什么都允许的 items。在样例的这个数组里放一个真实的元素再运行一次即可。非严格模式下,这种数组会写成不限制元素类型的 items。

背后的开源项目

本工具是独立实现,并未打包第三方库。glideapps/quicktype(Apache-2.0)在代码层面做的是同一件事——如果你需要在自己的程序里实现它,从那里开始,而不是调用一个网页。

glideapps/quicktype

也常被称作

  • json schema生成
  • json转json schema
  • json schema在线生成
  • 结构化输出schema
  • function calling参数定义
  • openai strict模式