祈灵工具箱

✅JSON Schema 生成与校验 - 由 JSON 生成 Schema、在线验证数据

写接口文档、做表单校验或给配置文件加约束时,经常需要一份 JSON Schema,但从零手写既费时又容易漏字段。在“生成”模式里粘贴一段示例 JSON,工具会推断每个字段的类型(区分 integer 与 number)、嵌套对象和数组结构,把数组里多个对象的字段合并(只有全部对象都有的字段才标为必填),类型不一致时生成 ["string", "null"] 这样的类型数组,还能识别 email、date-time、date、uri、uuid、ipv4 等字符串格式,可选为取值有限的字符串建议 enum、附带示例值或禁止额外字段,输出 draft 2020-12 或 draft-07。在“校验”模式里,用 Schema 检查 JSON 数据:手写的校验器支持 type、properties、required、additionalProperties、patternProperties、items 与 prefixItems(兼容 draft-07 的元组写法)、enum、const、长度与数量限制、pattern、format、minimum / maximum / exclusive、multipleOf、allOf / anyOf / oneOf / not、if / then / else、dependentRequired,以及指向 #/$defs 和 #/definitions 的 $ref(支持递归)。每处错误都会给出数据中的 JSON Pointer 路径、易懂的说明和对应的 Schema 位置。全部在浏览器本地完成。

免费 · 无需注册 · 浏览器本地处理最后更新:

正在加载工具...

如何使用JSON Schema 生成与校验

  1. 1在“由 JSON 生成 Schema”中粘贴示例 JSON,选择 Schema 版本与选项
  2. 2复制或下载生成的 Schema,或点击“拿去校验”
  3. 3在“用 Schema 校验 JSON”中粘贴 Schema 和数据,查看逐条错误列表

常见问题

生成的 Schema 能直接用吗?
可以作为很好的起点。它完全根据示例推断:示例里没出现的字段不会出现在 Schema 中,只出现在部分数组元素里的字段不会被标为必填。建议用更多样的示例生成,再按业务补充 minLength、pattern、enum 等约束和 description 说明。
draft 2020-12 和 draft-07 有什么区别?
两者的大部分关键字相同,主要区别是元组写法(2020-12 用 prefixItems,draft-07 用数组形式的 items 加 additionalItems)、定义位置($defs 与 definitions)以及 $schema 地址。OpenAPI 3.1 与多数新工具使用 2020-12;一些老的库和编辑器插件只支持 draft-07。校验器两种写法都能识别。
format 会被校验吗?
默认会校验 email、date、date-time、time、uri、uuid、ipv4、ipv6、hostname、regex 等常见格式,其中日期会检查真实存在(如 2 月 30 日判为无效)。按规范 format 默认只是注解,如果你的后端校验器不检查 format,可以取消“校验 format”保持一致。
有哪些不支持的功能?
不支持远程 $ref(指向其它文件或网址的引用)、$dynamicRef、unevaluatedProperties / unevaluatedItems 和自定义关键字;遇到无法解析的 $ref 会给出提示。数据和 Schema 都只在浏览器中处理,不会上传。