← 返回工具箱

JSON Schema 生成与校验

JSON SCHEMA · 数据处理

粘贴 JSON 样例一键推断 draft-07 Schema;反向用 Schema 校验数据,错误定位到 JSON Pointer 路径,常用关键字全覆盖,零依赖本地运行。

① JSON 样例 → Schema
② Schema(可编辑)
③ Schema → 校验数据
自实现 draft-07 常用子集校验器(零依赖):type / required / properties / items / enum / const / minimum / maximum / exclusiveMinimum / exclusiveMaximum / minLength / maxLength / pattern / minItems / maxItems / uniqueItems / additionalProperties / format(date-time email uri ipv4 ipv6 uuid regex);不支持的关键字静默跳过,正式验收请用完整实现(如 Ajv)复核。

>_ 使用指南 · GUIDE

API 契约的两头都需要 Schema:没有样例时从零手写费时费力,有了 Schema 又要反复核对数据是否合规。这个工具把两个方向接起来:粘贴 JSON 样例一键推断 draft-07 Schema(object 递归 properties + required、integer/number 区分、数组取首元素模板),再把 Schema(可编辑)和数据粘进校验面板,错误精确到 JSON Pointer 路径(如 /users/0/name)。

典型步骤:

  1. 粘贴 JSON 样例:接口返回体、配置文件或任意 JSON 片段
  2. 点击「生成 Schema」:右侧输出 draft-07 Schema,类型与必填一目了然
  3. 按需编辑 Schema:去掉过严的必填、补上枚举或长度限制——直接改 JSON
  4. 粘贴待校验数据:点击「校验」,通过或逐条列出违规关键字与路径
  5. 复制取用:Schema 与校验结果都可一键复制,贴进 CI 或文档

>_ 常见问题 · FAQ

Q1 · 支持 draft-07 的哪些关键字?

常用子集全覆盖:type / required / properties / items / enum / const / minimum / maximum / exclusiveMinimum / exclusiveMaximum / minLength / maxLength / pattern / minItems / maxItems / uniqueItems / additionalProperties / format(format 支持 date-time、email、uri、ipv4、ipv6、uuid、regex 七种)。页面说明区列出了完整清单,不支持的关键字静默跳过——正式验收建议用 Ajv 等完整实现复核。

Q2 · 生成的 Schema 准确吗?required 会不会太严?

推断完全基于你给的样例:样例里有的字段全部进 required,整数推断为 integer、带小数推断为 number。样例只跑过「 happy path」时 required 确实偏严——这正是可编辑面板存在的意义:把偶发字段从 required 移出、给字符串补 minLength,比从零手写快得多。

Q3 · 错误提示里的 /users/0/name 是什么意思?

JSON Pointer(RFC 6901)路径:从根开始逐层定位,数组用下标。/users/0/name 表示根对象下 users 数组第 1 个元素的 name 字段。每条违规都标注了违反的关键字(如 type、required、pattern)和该路径,定位到字段级。

Q4 · 为什么不引入 Ajv?自己写的校验器可靠吗?

站点纪律是零依赖、纯本地计算:校验器约 200 行纯函数,覆盖日常 90% 用例并附回归测试;代价是不支持 if/then/else、$ref、allOf 等高级组合关键字。工具页有固定的子集覆盖声明,正式验收(如 API 契约测试)请用完整实现复核——本工具定位是快速查错与 Schema 起草,不是合规终审。

Q5 · 数据会上传吗?

不会。推断、编辑、校验全部在浏览器本地完成,无任何网络请求;页面加载后离线也能用。生产环境样例建议先脱敏(工具只看结构,不影响推断结果)。

嵌入代码

把下面的代码复制到你的网页,即可将本工具嵌入为 iframe(自动隐藏导航与页脚)。

高度px
此工具在你的浏览器本地运行,输入内容不会上传。按 Ctrl K 可随时切换到其他工具。