JSON Schema 验证器
在线验证 JSON 数据是否符合 JSON Schema,支持 Draft-07 和 Draft 2020-12,显示错误路径(如 $.items[0].name)和详细信息。免费,纯浏览器端运行,数据不离开本地。
使用方法
- 在左侧粘贴 JSON Schema,在右侧粘贴 JSON 数据。
- 通过下拉菜单选择 Schema 草案版本(Draft-07 或 Draft 2020-12)。
- 点击 Validate(或按 Ctrl+Enter)。
- 若数据合法,绿色提示表示数据符合 Schema。
- 若数据不合法,每条错误显示对应的 JSON 路径、错误信息和附加参数。
点击 Load Example 可自动填入示例 User Schema 和对应 JSON,快速体验工具功能。
读懂错误输出
每条验证错误包含以下三部分:
- 路径 — JSON Pointer 格式的失败值路径(如
/items/0/price,根节点为(root))。 - 信息 — AJV 输出的通俗错误描述(如 must be integer、must have required property ‘name’)。
- 参数 — 附加上下文,如允许的类型、最小值或所需的正则模式。
常用 JSON Schema 关键字
type— 限制 JSON 类型:string、number、integer、boolean、array、object、null。required— 对象中必须包含的属性名数组。properties— 为对象的各命名属性定义约束。additionalProperties: false— 拒绝properties以外的任何属性。minimum/maximum— 数值范围约束。minLength/maxLength— 字符串长度约束。pattern— 用正则验证字符串(如”^[a-z]+”)。enum— 限制为固定的值集合。items— 定义数组元素的 Schema。
示例 Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["name", "age"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"age": { "type": "integer", "minimum": 0 },
"email": { "type": "string" }
},
"additionalProperties": false
}
合法数据:{"name":"Alice","age":30}
非法数据:{"name":"","age":-1,"extra":true} — 会产生三条错误。
FAQ
支持哪些 JSON Schema 草案版本?
支持 Draft-07(最广泛使用,兼容 OpenAPI 3.0 及众多验证工具)和 Draft 2020-12(最新规范)。验证前可通过下拉菜单切换版本。
/user/age 这样的错误路径是什么意思?
错误路径遵循 JSON Pointer 语法(RFC 6901)。/user/age 表示 user 对象内的 age 属性验证失败。根对象用 / 表示,数组元素路径格式如 /items/0、/items/1 等。
什么是 JSON Schema?
JSON Schema 是用于注解和验证 JSON 文档的规范。它允许你定义 JSON 对象的预期结构、类型、必填字段、值范围和格式要求。广泛应用于 API 请求/响应验证、配置文件验证和数据管道校验等场景。
可以验证以数组为根节点的 JSON 吗?
可以。将 Schema 设置为描述数组的格式,例如 {"type": "array", "items": {"type": "string"}},然后粘贴类似 ["a", "b"] 的 JSON 数组即可。
数据会上传到服务器吗?
不会。验证完全在浏览器中通过 AJV 库完成,Schema 和 JSON 数据不会离开本地设备。