JSON Schema 校验器
根据 JSON Schema 定义校验 JSON 数据。所有处理在浏览器中完成。
校验通过!数据符合 Schema 定义。
| 路径 | 错误信息 |
|---|
如何使用 JSON Schema 校验器
输入 Schema
在左侧输入 JSON Schema 定义。
输入数据
在右侧输入要校验的 JSON 数据。
校验
点击校验按钮查看结果。
什么是 JSON Schema?
JSON Schema 是一种用于描述和校验 JSON 数据结构的规范。它定义了 JSON 文档应满足的约束条件,包括字段类型、必填字段、值范围和格式要求。
核心特性
类型校验
支持 string、number、integer、boolean、array、object 和 null
约束条件
支持 minimum/maximum、minLength/maxLength、pattern、enum 等
结构定义
支持 required、properties、items、additionalProperties 等
常见问题
支持 JSON Schema Draft-07 规范,这是目前最广泛使用的版本。
可以。JSON Schema 支持任意深度的嵌套对象和数组校验。
是的,所有校验完全在浏览器中使用 Ajv 库完成,数据不会发送到服务器。
type(string、number、object、array、boolean、null)、包含嵌套 schema 的 properties、列出必填键的 required、用于固定取值集合的 enum、以正则约束字符串的 pattern,以及范围检查 minimum/maximum 和 minLength/maxLength。additionalProperties: false 可以收紧对象、禁止多余的键。它们共同覆盖了大部分 API 校验规则。
在现代 JSON Schema 中,format 默认只是注解(annotation),而不是自动断言——校验器只有在被配置为强制执行时才会检查它,2020-12 规范通过单独的 format-assertion 词汇表明确了这一点。如果必须保证强制校验,请使用 pattern 或自定义关键字;否则可将 format 视为互操作性元数据。
指向 #/$defs/address 的 $ref 会引用 $defs 下的某个 schema 片段,并在所有使用到它的地方按该片段进行校验——这就是去重机制。Draft 2020-12 将旧的 definitions 重命名为 $defs,并正式引入 $dynamicRef 以支持评论树等递归结构。引用也可以指向外部文档,不过更常见的做法是本地打包。
allOf 要求每个子 schema 都通过校验——即交集,用于在基础 schema 上组合附加约束。anyOf 要求至少一个通过——即并集,用于多态数据载荷。oneOf 要求恰好一个通过;两个或零个子 schema 通过校验都会失败,这比人们预期的更严格,也是 schema 相互重叠时出现意外错误的常见原因。
2020-12 将规范拆分为可独立协商的词汇表(validation、annotation、format-assertion),将 definitions 重命名为 $defs,把 exclusiveMinimum 简化为普通数字,并用 prefixItems 加 items 取代了旧的 items 关键字。大多数工具两种草案都支持;draft-07 仍是部署最广泛的版本,但 2020-12 是当前已发布的标准。