JSON Schema 校验可以处理什么?
填入待校验 JSON 和 JSON Schema Draft 7 规则,在可取消的浏览器 Worker 中检查。工具先用 Draft 7 元模式检查规则,再校验数据,不自动转换类型,也不填入默认值。
什么时候使用这个工具?
检查数据契约时使用本工具;仅检查语法可用 JSON 格式化,提取字段可用 JSON 查询,构造测试数据可用模拟数据生成。通过校验仅说明符合所提供规则及已支持的 Draft 7 行为。
如何使用?
- 粘贴 JSON 和 Draft 7 Schema,或分别打开两个本地文件,每份最多 2 MiB。
- 点击“运行”,检查 valid 标志和错误路径;JSON 语法正确也可能不符合规则。
- 修改数据或规则后重新运行,核对报告再复制或下载。
实际输入输出示例
检查整数年龄字段
输入
JSON:{"age":"21"}
Schema:{"type":"object","properties":{"age":{"type":"integer","minimum":18}},"required":["age"]}输出
valid: false
instancePath: #/age
keyword: type字符串 "21" 不是整数,改成数字 21 后可通过这份规则。校验不会改写原始数据。
常见错误与修复方法
| 现象 | 可能原因 | 修复方法 |
|---|---|---|
| 尚未校验数据就提示规则无效。 | Schema 语法、关键字取值或声明的草案版本不受支持。 | 使用 Draft 7 并检查关键字类型,将 prefixItems 等其他草案的写法改为 Draft 7 对应写法。 |
| 引用无法解析。 | 仅支持当前 Schema 文档内的 # 引用,不请求远程文件。 | 将外部规则合并到 definitions,再通过 #/definitions/name 引用。 |
支持范围与限制
仅支持 Draft 7,省略 $schema 时按 Draft 7 处理,其他草案的关键字会被拒绝。未知扩展关键字会被忽略,不执行自定义代码。引用须在同一文档内解析。format 按引擎支持范围检查,不验证邮箱账号或网址是否真实可用。Schema 嵌套最多 100 层,报告最多显示 100 个错误,单次处理上限 15 秒。数字使用 JavaScript 精度,超大 ID 请保留为字符串。
标准与实现参考
- @cfworker/json-schema 官方仓库 (opens in a new tab)解释执行 Schema,无需 eval 或动态生成函数;仍受官方列出的不支持用例限制。
- JSON Schema Draft 7 官方元模式 (opens in a new tab)已随本站静态资源打包,使用工具时无需远程请求。
关于JSON Schema 校验的常见问题
输入内容会上传吗?
不会。数据在浏览器 Worker 内处理。页面从本站加载所需引擎,不向处理 API 发送输入、输出或文件名。
需要账号或 API Key 吗?
不需要账号、API Key 或后端处理服务。
如何保存处理结果?
检查结果后,使用对应的复制或下载控件。修改输入会清除旧结果,避免误用。
有哪些限制?
仅支持 Draft 7,省略 $schema 时按 Draft 7 处理,其他草案的关键字会被拒绝。未知扩展关键字会被忽略,不执行自定义代码。引用须在同一文档内解析。format 按引擎支持范围检查,不验证邮箱账号或网址是否真实可用。Schema 嵌套最多 100 层,报告最多显示 100 个错误,单次处理上限 15 秒。数字使用 JavaScript 精度,超大 ID 请保留为字符串。
更新记录
新增浏览器本地处理、明确大小限制、取消操作、实际输入输出示例、常见错误解释和结果下载;完成中文工作区与说明审校。