toolgarden.xyz
EN

JSON Schema 校验

用 JSON Schema 校验 JSON / JSONC / JSON5 数据,逐条给出错误字段路径和具体原因,浏览器本地处理。

JSON / JSONC / JSON5 数据

JSON Schema

校验结果

点击校验后显示结果

工具说明

JSON Schema 校验把数据与一组明确规则逐层比对,错误会带上 `$` 开头的字段路径。当前实现支持类型、const、enum、allOf、anyOf、oneOf、字符串长度与 pattern、常见 format、数值范围、数组数量与 items、对象 required、properties 和 additionalProperties 等常用约束。

校验成功只表示输入满足这份 Schema,不代表业务语义一定正确。Schema 本身也需要版本管理和测试,尤其是 oneOf 的互斥、format 的严格程度以及 additionalProperties 是否允许扩展字段。

使用步骤

  1. 输入待验证 JSON

    左侧放真实数据,JSONC 和 JSON5 也会先被解析为标准数据结构。

  2. 输入 Schema

    右侧放对象形式的 JSON Schema,确保关键字拼写和嵌套位置正确。

  3. 按错误路径修复

    逐条查看期望类型、缺失字段或范围错误;修改后重新校验直到无错误。

输入与输出示例

错误信息带上字段路径,可以直接定位到出问题的位置。

Schema 与数据
// schema
{ "type": "object",
  "required": ["id"],
  "properties": { "id": { "type": "integer" } } }

// data
{ "id": "7" }
校验结果
$.id  期望 integer,实际得到 string

支持范围与限制

输入
一份 JSON Schema 和一份待校验的 JSON 数据
输出
通过与否,以及每条错误的字段路径和原因
支持的约束
类型、required、枚举、数值范围、字符串长度与格式、数组长度、嵌套对象
常见误判来源
schema 里漏写 required 时,缺字段的数据也会通过校验
additionalProperties
默认允许额外字段。要拒绝未声明的字段需在 schema 里显式设为 false
与生成的配合
先用 JSON Schema 生成起草,补完约束后用这里回测多份样本

典型使用场景

  • 检查 API 请求体

    在发送前确认必填字段、类型、枚举与格式满足后端约定。

  • 验证配置迁移

    批量修改配置后,用同一 Schema 发现缺字段、额外字段或数值越界。

  • 回归测试 schema 本身

    改动 schema 后拿历史样本逐一回测,确认新约束没有把原本合法的数据判为错误。

使用前需要知道的事

  • 这不是完整的 JSON Schema 引擎,未实现的高级关键字不应被视为已经校验。
  • format 校验覆盖 email、date、date-time 和 uri 等常见值,但格式通过不代表地址真实存在。
  • oneOf 要求恰好一个分支匹配,多个分支同时通过也会被判为错误。

相关概念

instance
被 Schema 检查的实际 JSON 数据。
additionalProperties
控制 properties 未声明的对象字段是否允许出现,设为 false 时可捕获拼错 key。

常见问题

校验失败时能看到具体原因吗?
能。工具会输出出错字段的路径和原因,方便快速定位是类型不符、缺少必填还是超出约束。
支持哪种 JSON Schema 规范?
支持常见的 JSON Schema Draft 规范,可用于校验接口返回、配置文件等是否符合约定结构。
校验会上传数据吗?
不会。Schema 和数据都在浏览器本地校验,内容不会上传到服务器。
数据明显缺字段,为什么还是通过了?
因为 schema 里没有写 required。JSON Schema 默认所有字段都是可选的:不声明 required 就等于允许缺失。这是最常见的一类「校验通过但数据不对」。
怎么禁止多出来的字段?
在对象上显式设置 `additionalProperties: false`。默认是允许额外字段的,所以拼错的 key 会被当作新增字段静默接受,而不是报错。