JSON Schema 生成器(Draft 2020-12)
根据示例 JSON 生成 JSON Schema(draft 2020-12):类型、必填键、可空联合、数组项,以及 email 和 date-time 等字符串格式。免费。
完全在浏览器中运行,您的数据不会被上传。
相关工具
查看全部什么是 JSON Schema 生成器?
根据示例文档推断 JSON Schema。生成器会描述每个属性的类型,把数组项合并为一个 items 模式,列出必填键,用类型联合标记可空值,并能检测常见的字符串格式。
如何使用 JSON Schema 生成器
- 将 JSON 粘贴到 JSON 输入框中,或使用加载示例或打开文件。
- 可选地设置 Schema 标题(可选)。
- 切换将键标记为必填 (required)、识别字符串格式(email、date-time、uri…)和禁止额外属性。
- JSON Schema 输出会随你的输入实时更新;可使用复制或下载。
示例
{"id":1,"email":"a@b.co"} {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"email": {
"type": "string",
"format": "email"
}
},
"required": [
"id",
"email"
]
} 何时使用 JSON Schema 生成器
适合作为 API 契约、配置校验或表单生成的起点。从单个示例推断出的模式,质量取决于示例本身:在用它校验真实数据之前,请手动添加 minimum、enum 或 pattern 等约束。
JSON Schema 生成器 的工作原理
程序会递归遍历示例,每个位置都会收集见到过的 JSON 类型(integer、number、string、boolean、object、array、null)。整数与小数混合会变为 number;多种类型会变成 ["object", "null"] 这样的 type 数组。对于对象数组,只有每个对象都含有某个属性时,它才是必填的。格式检测会用 date-time、date、time、email、uuid、uri 和 ipv4 的模式检查字符串,并且只有当每个值都匹配时才添加 format。结果会声明 $schema: https://json-schema.org/draft/2020-12/schema。
常见用例
- 为 API 请求体搭建模式的雏形
- 用 ajv 或 CI 检查来校验配置文件
- 记录 Webhook 载荷的结构
- 在接受 JSON Schema 的工具中根据模式生成表单
常见问题
生成的是哪个草案版本?
Draft 2020-12,通过 $schema 关键字声明。所用的关键字(type、properties、required、items、format、additionalProperties)在 draft-07 中同样有效。
如何检测可选属性?
只能从对象数组中检测:如果某个键在部分元素中缺失,就不会出现在 required 中。对于单个对象,启用该选项时每个键都是必填的。
format 会被强制校验吗?
在 JSON Schema 中,format 默认只是注解;ajv 等校验器需要启用格式校验(ajv-formats)。