工具
ZH

JSON Schema 在线生成器

粘贴一个示例 JSON 文档,即可得到描述其结构的 JSON Schema,包括类型、必需属性、嵌套的对象和数组,以及 email、date-time、UUID 等字符串格式。

示例 JSON

JSON Schema

隐私保护:您的数据仅在浏览器中处理,绝不会被上传。

如何生成 JSON Schema

  1. 粘贴一个有代表性的 JSON 示例。包含多个元素的数组效果最好,因为这些元素会被合并为同一个 Schema。
  2. 选择 Schema 版本(draft 2020-12 或 draft-07),并决定是否将属性标记为必需、是否识别格式以及是否禁止额外属性。
  3. 复制或下载 Schema,然后手动完善,例如添加描述、枚举值或最小值和最大值。

生成器能推断出哪些内容

JSON 示例Schema
"ada@example.com"{"type": "string", "format": "email"}
"2026-05-01T10:00:00Z"格式 date-time(还支持 date、time、uri、uuid、ipv4)
42 / 4.5"integer" / "number"
每个对象中都存在的键列入 required
部分数组元素中缺失的键可选(不在 required 中)
[1, "a", null]"items": {"type": ["string", "integer", "null"]}
对象与普通值混合anyOf,每种类型各一个 Schema

JSON Schema 是什么?

JSON Schema 是一套用于描述和校验 JSON 数据结构的规范:它定义了有哪些属性、每个属性是什么类型、哪些属性是必需的,以及允许哪些取值。它被广泛用于 OpenAPI 中的 API 契约、配置文件、表单生成,以及校验 AI 模型的结构化输出。当前版本是 2020-12,许多较旧的工具仍然支持 draft-07。规范发布在 json-schema.org 上。

完善生成的 Schema

常见问题

应该使用哪个 JSON Schema 版本?

新项目请使用 draft 2020-12,它是当前版本,也是 OpenAPI 3.1 的基础。如果你的校验器或工具链尚不支持 2020-12,请选择 draft-07。

为什么所有属性都被标记为必需?

只有一个示例对象时,每个属性都存在,因此全部会被标记为必需。请使用包含多个不同示例的数组,或关闭将属性标记为必需。

生成器能识别枚举或取值范围吗?

不能。单个示例无法说明一般情况下允许哪些值,因此枚举、最小值和最大值以及正则模式都需要手动添加。

如何根据 Schema 校验 JSON?

使用校验库,例如 JavaScript 的 Ajv 或 Python 的 jsonschema。许多代码编辑器也会根据 JSON 文件中 $schema 属性引用的 Schema 自动校验该文件。