JSON schema
生成器
粘贴任意 JSON,一次得到三样东西:一份 draft 2020-12 的 JSON Schema、TypeScript 接口,以及对该形状的纯英文描述,required 字段、enums 和 formats 都从数据本身推断得出。
一次粘贴,三个答案
Yetty 通过 MCP 给你的 AI 一幅完整的网站图景,页面、集合和它可以安全编辑的字段。
形状是如何
推断出来的
形状会被合并
对象数组不会只凭第一项来判断。每个对象都合并成一个形状,所以只在第 40 项才出现的字段依然会进入 schema,作为可选。
required 看是否存在
在每个被采样对象里都存在的字段进入 required。哪怕只有一处缺失,它就变成可选,这是对你所粘贴证据的诚实解读。
enums 看是否重复
当一个字符串字段始终只取少数几个值,status、plan、role,而且这些值反复出现时,schema 就把它固定为 enum,而不是一个松散的字符串。
formats 看模式
始终看起来像 dates、date-times、emails、URLs 或 UUIDs 的值,会获得相应的 format 关键字,这样校验器才能真正检查它们。
三种视图,一个真相
JSON Schema、TypeScript 接口和纯英文摘要都从同一个合并形状渲染而来,它们彼此永远不会矛盾。
样本终究是样本
schema 描述的是你粘贴的 JSON,而不是你的系统将来可能产生的每一份 JSON。把它当作一份有力的初稿,再放宽你知道会变化的部分。
大家还在问
如何从一个示例 JSON 文件生成 JSON Schema?
把本页的示例粘进去,schema 立刻出现,draft 2020-12,类型从值推断得出,required 列出始终存在的字段,date、email、uri 和 uuid 等字符串格式则直接从数据本身识别。全程在你的浏览器里运行,所以含有密钥的配置文件或 API 响应绝不离开你的机器。
它怎么决定哪些字段是 required、哪些是可选?
看是否存在。当你的 JSON 是一个对象数组时,所有对象的形状会被合并:出现在每个对象里的字段进入 required,哪怕只在一个对象里缺失的字段就变为可选。在 TypeScript 标签页里,同样的逻辑表现为属性上的问号,而纯英文标签页会写"有时缺失",这是同一个合并形状的三种视图。
不安装任何东西,能从 JSON 得到 TypeScript 接口吗?
可以,TypeScript 标签页会从同一个推断出的形状构建嵌套接口:对象变成命名接口,数组变成 T[] 类型,有时缺失的字段带上可选标记,混合值变成 union 类型。把这个标签页直接复制进你的代码库即可,不涉及 npm 包、不用注册、也不用上传。