JSON Schema 验证
使用 JSON Schema(draft-07)在浏览器本地校验 JSON 数据:支持 type、required、properties、items、enum、const、数值与字符串约束、anyOf/oneOf/allOf 与同文档 $ref,错误按 JSON Pointer 路径逐条列出。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
校验结果
填入 JSON 数据与 Schema 后即可开始校验
这个工具能做什么
- 接口联调前先用 Schema 卡住结构:校验通过再往后走,避免字段缺失或类型不对的问题拖到运行时才暴露。
- 验证上游数据:把服务商给的 JSON 样例和自己写的 Schema 对一遍,确认必填字段与取值约束都符合预期。
- 写文档或测试夹具:把 Schema 当成接口契约的一部分,随手校验样例数据是不是仍然匹配。
- 排查「为什么校验不过」:错误按 JSON Pointer 路径逐条列出,直接定位到 /tags/0 这种具体位置。
示例
输入
数据 {"id": 1, "name": "UniKit", "tags": ["yaml", "json"]}
Schema(draft-07):type object,required ["id","name"],properties 里 id 为 integer 且 minimum 1、name 为 string 且 minLength 2、tags 为 string 数组且 uniqueItems 为 true输出
校验通过:数据符合这份 JSON Schema
把数据改成 {"id": 0, "tags": ["a","a"]} 就会得到三条问题:根节点缺少必填属性 name、/id 小于最小值 1、/tags/0 元素重复。
常见问题
支持哪个版本的 JSON Schema?
draft-07。支持 type、required、properties、items、enum、const、数值与字符串约束(minimum、maximum、exclusiveMinimum、exclusiveMaximum、multipleOf、minLength、maxLength、pattern)、数组与对象计数约束、additionalProperties,以及 anyOf / oneOf / allOf / not 和同文档内的 $ref。跨文档的远程 $ref 不会去请求网络,会直接报「$ref 指向的地址在当前文档里不存在」。
校验通过就说明数据一定对吗?
不是。Schema 只能保证结构和类型符合约束,管不了业务规则,比如「结束时间必须晚于开始时间」或者「id 必须存在于数据库」。它拦掉的是最低级也最常见的错误,剩下的仍然要靠业务代码。
报错里的路径是什么格式?
JSON Pointer(RFC 6901),以 / 开头逐级指向出错位置,例如 /tags/0 表示 tags 数组的第 0 个元素;根节点的错误显示为「(根节点)」。每一条还会给出关键字与说明,例如 required、minimum、uniqueItems,方便按类型批量处理。
数据或 Schema 本身不是合法 JSON 会怎样?
会分别提示是数据侧还是 Schema 侧的问题,并给出第几行第几列与原因。Schema 结构不合法(例如 type 取值错误、required 不是字符串数组)也会单独报错,不会静默当成校验通过。
校验过程会联网吗?
不会。解析、$ref 解析与校验全部在浏览器里完成,页面不发起任何网络请求,断网也能用,数据与 Schema 不会被上传或记录。
关键词:json schemajson schema 验证json 校验schema validatorvalidate jsondraft-07$refjson pointer数据校验结构校验