我构建了一个仅基于浏览器的 JSON Schema 验证器—... 笔记

我构建了一个仅基于浏览器的 JSON Schema 验证器——支持 Draft-07、$ref、allOf/anyOf/oneOf、if/then/else,共 173 个测试

一款全新的零依赖浏览器工具已开发完成,用于从头验证 JSON Schema Draft-07 规范。该工具专为快速模式检查、调试和学习而设计,无需配置 Node.js 项目。它实现了 Draft-07 关键字的综合子集,包括类型系统、枚举、字符串、数字、数组、对象、组合、条件判断和引用。验证器还支持常见格式,如电子邮件、URI、日期和 UUID。每个验证错误均提供 JSON 路径以定位失败值、人类可读的错误消息,以及指示具体失效规则的关键词徽章。该工具的建筑架构基于一个递归函数,用于将数据与模式进行验证。其优先执行类型检查,若数据类型与模式预期的类型不匹配则提前返回。验证器还兼容旧版 Draft-04 中关于 exclusiveMinimum 和 exclusiveMaximum 关键字的处理。本地 $ref 解析通过遍历根模式内的 JSON Pointer 路径来实现,且 $ref 关键字按照规范会短路所有同级关键字。Draft-07 的关键特性——使用 if/then/else 的条件验证——已实现,以支持更动态的模式规则。该工具包含超过 170 个测试,覆盖所有已实现的功能和关键字,确保准确性与可靠性。用户界面采用分屏布局,分别展示 JSON 数据和模式,结果显示在下方。解析错误会立即在各分屏中提示。错误卡片设计注重信息性,其格式参考了 ajv 等流行库。工具提供三个内置示例,便于立即探索。该工具可在线访问于 json-schema-validator-dev.pages.dev,并属于不断增长的纯浏览器开发者工具集合之一。