JSON Schema 生成器与校验器

从样本生成 JSON Schema,或根据 schema 校验一个 JSON 文档,就在你的浏览器中完成。你的数据绝不会离开你的设备。

schema 生成与 Ajv 校验都在你的浏览器本地运行,因此你的 JSON 样本、schema 和文档绝不会上传。

需要 TypeScript 类型?试试 JSON 转 TypeScript。

关于 JSON Schema 生成器

这款 JSON Schema 生成器会把一个 JSON 样本转换为一份即用型 JSON Schema,内置的校验器则会根据你提供的 schema 检查任意 JSON 文档。在「生成」模式下,它会遍历你的样本,为对象、数组、字符串、数字、布尔值和 null 推断类型,统一数组元素,还能将每个属性标记为 required、把 additionalProperties 设为 false,并检测 email、date、date-time、uri 和 uuid 等字符串格式。输出可选择 draft-07 或 2020-12。在「校验」模式下,它会用启用了 allErrors 和 ajv-formats 的 Ajv 运行,然后列出每个失败项及其实例路径和消息。它专为 API 开发者、后端工程师,以及任何定义或测试 JSON 契约的人而打造。一切都在你的浏览器中运行,因此你粘贴的样本和 schema 留在你的设备上。

功能特性

如何使用 JSON Schema 生成器

  1. 选择「生成」以构建 schema,或选择「校验」以检查文档。
  2. 在「生成」中粘贴一个 JSON 样本,并切换 required、additionalProperties 和格式选项。
  3. 选择 draft-07 或 2020-12,然后复制或下载生成的 schema.json。
  4. 在「校验」中,将一份 JSON Schema 粘贴到左侧,将一份 JSON 文档粘贴到右侧。
  5. 查看有效/无效徽章以及错误列表,每条错误都带有实例路径。

示例

输入

{
  "id": 1,
  "name": "Ada",
  "email": "ada@example.com",
  "tags": ["a", "b"]
}

输出

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "id": { "type": "integer" },
    "name": { "type": "string" },
    "email": { "type": "string", "format": "email" },
    "tags": { "type": "array", "items": { "type": "string" } }
  },
  "required": ["id", "name", "email", "tags"]
}

在开启 required 和格式推断后,该样本生成一份 draft-07 schema。

常见错误与故障排除

常见问题

生成器使用哪个 JSON Schema 草案?
默认使用 draft-07,并提供 2020-12 选项。该选择会设置输出上的 $schema 方言 URL 以及草案之间的次要差异;推断出的结构在其他方面是相同的。
生成 schema 时如何决定 required 属性?
默认情况下不标记任何属性为 required,因此 schema 接受部分对象。打开「将所有属性标记为 required」可将每个对象的每个键都加入其 required 数组。
校验器如何报告错误?
它在启用 allErrors 的情况下运行 Ajv,因此你能一次性得到每个失败项。每条错误都会显示 JSON 实例路径(例如 /items/0/id)和一条可读消息,包括缺失的 required 键和意外的额外属性。
生成器会推断 email 或 date 等字符串格式吗?
会,当开启「推断字符串格式」时。它会用 email、date、date-time、uri 和 uuid 的模式检查样本字符串值并添加匹配的 format 关键字;都不匹配的值保持为普通字符串。
它如何为数组推断 schema?
它会把所有数组元素的 schema 合并为单个 items schema。混合的对象元素会逐属性合并,任何元素中缺失的键会从 required 中移除,空数组则变成 items:{}。
我的 JSON 样本或 schema 会被上传到任何地方吗?
不会。生成与校验(包括 Ajv)完全在你的浏览器中运行,因此你粘贴的样本、schema 和文档都在本地处理,留在你的设备上。

相关工具

全部 ArrayKit 工具