← 返回 JSON 工具

JSON Schema 校验器

最后更新:2026年10月2日

用 JSON Schema 校验 JSON 文档,并列出每一处未通过的约束及其路径。文档和 Schema 都在你的浏览器中解析与检查。

在浏览器中运行 无需上传 按路径报错 支持 Draft 2020-12 关键字 开源(MIT)

它检查什么

JSON Schema 描述一份文档允许具有的形状:有哪些属性、各自是什么类型、取值范围和模式如何。本页用一个 Schema 检查一份文档,并列出每一处不满足的位置,每条都带路径,方便你定位。

支持的关键字包括:type、const、enum、required、properties、additionalProperties、minProperties、maxProperties、items(单个 Schema,或 Schema 元组)、minItems、maxItems、uniqueItems、minLength、maxLength、pattern、minimum、maximum、exclusiveMinimum、exclusiveMaximum、multipleOf、allOf、anyOf、oneOf、not,以及指向同一 Schema 内部的本地 $ref 指针。

它有意不做的事

如何阅读错误

每处失败都报告在一个路径上:$ 是文档根,点号进入属性,方括号索引数组。required 报告在「本应包含该属性的对象」上——约束在对象上,而不在缺失的属性上——消息里会指明属性名。anyOf 和 oneOf 只在失败的那个实例上报告一次,而不是每个分支一次;满屏的分支错误反而会淹没真正的问题。

常见问题

支持哪些 JSON Schema 关键字?

type、const、enum、required、properties、additionalProperties、minProperties、maxProperties、items(单个 Schema 或 Schema 元组)、minItems、maxItems、uniqueItems、minLength、maxLength、pattern、minimum、maximum、exclusiveMinimum、exclusiveMaximum、multipleOf、allOf、anyOf、oneOf、not,以及本地 $ref。

有意不支持的有什么?

远程 $ref(只解析同一 Schema 内部的指针)、作为断言的 format 关键字、patternProperties、unevaluatedProperties、if/then/else 和 dependentSchemas。使用这些关键字的 Schema 仍会校验上面列出的关键字;未实现的关键字不会被强制执行,因此不要把这里的「通过」当作基于它们构建的 Schema 的完整一致性结果。

校验是在服务器上进行的吗?

不是。文档和 Schema 都在你的浏览器中用 JSON.parse 解析,并在内存中检查。不会上传任何内容,断开网络后页面依然可用。

为什么「缺少必需属性」的错误报告在父路径上?

因为约束就在那里。JSON Schema 把 required 应用于对象,而不是缺失的那个属性,所以错误报告在对象的路径上——例如 $ 而不是 $.name——并在消息里指明属性名。

anyOf 和 oneOf 是如何报告的?

在失败的那个实例上报告一条错误,而不是每个分支一条。anyOf 在没有任何分支匹配时失败;oneOf 在匹配的分支数不等于一时失败,消息会说明匹配了几个。把每个分支内部的错误都列出来反而会淹没真正的问题。

它会告诉我 Schema 本身有错,还是只检查文档?

它用 Schema 检查文档。如果 Schema 本身不是有效的 JSON,会单独告知。它不会用 JSON Schema 元 Schema 校验你的 Schema,因此语法正确但逻辑有误的 Schema 可能只是匹配不到任何内容。

需要比较两个文档?JSON 差异对比 可以做到。发现错误?联系我们。