这是什么
JSON Schema 是描述 JSON 数据结构的规范:对象必须有哪些属性、每个值是什么类型、允许的范围和格式、数组长度等等。OpenAPI 接口文档用它描述请求和响应,编辑器用它给配置文件做自动补全,后端用它拒绝不合规的请求。
这个工具用 Schema 校验 JSON 文档,并列出发现的每一个问题。每个错误都会显示它在数据中的位置(如 /tags/1 这样的 JSON Pointer)、可读的说明,以及失败的 Schema 关键字,方便你快速修正数据或 Schema。支持 2020-12、2019-09、Draft-07 和 Draft-04,包括 $ref、$defs、allOf/anyOf/oneOf、if/then/else、unevaluatedProperties 和格式校验。
怎么用
- 把数据粘贴到 JSON 数据,把 Schema 粘贴到 JSON Schema,也可以分别上传文件。示例 会载入一条故意写错几处的用户记录。
- 结果随输入实时更新:数据有效时显示绿色标记,否则显示错误数量和错误列表。
- 规范版本 保持自动即可按
$schema判断,也可以手动指定。关闭 列出所有错误 则遇到第一个错误就停止。 - 复制错误 会把错误列表复制为纯文本,方便贴到问题反馈或代码评审里。
如果任一侧不是合法的 JSON,提示会说明是数据还是 Schema 有问题,并给出行号和列号。
示例
使用下面的 Schema:
{
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"age": { "type": "integer", "minimum": 0 }
}
}
校验文档 {"age": -1} 会得到两个错误:在(根)处缺少必填属性 id;在 /age 处,值小于最小值 0。
小技巧
加上 "additionalProperties": false 可以发现拼错的属性名,否则它们会被悄悄放过。固定取值用 enum 或 const,产品编号这类字符串用 pattern。Schema 变大后,把重复的部分移到 $defs,再用 $ref 引用。
常见问题
› 支持哪些 JSON Schema 版本?
支持 2020-12、2019-09、Draft-07(同时涵盖 Draft-06)和 Draft-04。「规范版本」选自动时,按 Schema 里的 $schema 关键字判断;没有 $schema 的 Schema 按 2020-12 处理。
› 错误里的路径是什么意思?
第一个路径是 JSON Pointer,指向数据中校验失败的值,例如 /items/2/price;「(根)」表示整个文档。下面灰色的一行是失败的关键字及其在 Schema 中的位置,例如 minimum · #/properties/age/minimum。
› 会检查 email、date-time 这类格式吗?
会。常见格式都会校验:date、time、date-time、duration、email、hostname、ipv4、ipv6、uri、uri-reference、uuid、regex、json-pointer 等。未知格式按规范忽略。
› Schema 能引用其他文件吗?
同一个 Schema 内部的引用可以用,例如 $ref 指向 #/$defs/address。外部 URL 不会被下载,因为所有内容都不离开浏览器;请把被引用的定义粘贴到 $defs 里。