JSON Schema 生成器(Draft 2020-12)

根据示例 JSON 生成 JSON Schema(draft 2020-12):类型、必填键、可空联合、数组项,以及 email 和 date-time 等字符串格式。免费。

完全在浏览器中运行,您的数据不会被上传。

相关工具

查看全部

什么是 JSON Schema 生成器?

根据示例文档推断 JSON Schema。生成器会描述每个属性的类型,把数组项合并为一个 items 模式,列出必填键,用类型联合标记可空值,并能检测常见的字符串格式。

如何使用 JSON Schema 生成器

  1. 将 JSON 粘贴到 JSON 输入框中,或使用加载示例或打开文件。
  2. 可选地设置 Schema 标题(可选)。
  3. 切换将键标记为必填 (required)、识别字符串格式(email、date-time、uri…)和禁止额外属性。
  4. 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)。

推荐的下一步

探索更多分类