onlinetools.dev

JSON Schema 校验与生成

按 Schema 校验 JSON,或从样本数据推导 Schema

本地运行
loading…
关于此工具

同一门功课的两个方向:粘贴 JSON 样本,得到从中推导的 draft-07 Schema;或者粘贴数据加 Schema,看到每一处违规连同它的 JSON 路径。校验由 Ajv 驱动——多数 Node 服务用的正是这套引擎——在这里通过的,在 CI 里同样通过。

推导以生产为念:对象键变成带类型的属性和 required 项,数组合并所有成员的形状,整数与浮点数被区分开,只在部分数组成员中出现的键会被正确地排除在 required 之外。结果是一个起点,再由你用 format、取值范围和 pattern 收紧。

API 响应和配置文件恰恰是你最不想放到第三方服务器上的数据。推导与校验都完全在你的浏览器中运行。

常见问题

支持哪个 JSON Schema 草案?
推导输出 draft-07,它是编辑器和校验器之间支持最广的草案。校验接受 draft-07 以及 Ajv 在非严格模式下理解的更早草案;2019-09/2020-12 的关键字大多也能工作,因为未知关键字会被忽略而不是报错。
违规路径里的 $ 是什么意思?
它是文档的根,JSONPath 风格:$.age 指顶层的 age 属性,$.items.2.name 指第三个数组元素的 name。空路径($)表示违规发生在文档根本身——类型不对,或缺少必需属性。
为什么推导出的 Schema 比我预期的更严或更松?
它描述的正是你给的那份样本:处处出现的字段成为 required,只有观察到的类型被允许。喂一份更多样的样本(一组有代表性的对象数组)能得到更通用的 Schema,然后手动调整——推导无法猜出意图。
校验支持 format、pattern 等约束关键字吗?
结构性关键字(type、required、properties、items、enum、minimum、pattern…)全部强制执行。"email"、"date-time" 之类的 format 字符串不做断言——这与 JSON Schema 规范一致(format 默认只是注解),也避免了虚假的安全感。
相关工具