JSON Schema 校验
正在准备交互工具…
JSON Schema 校验
使用 JSON Schema 校验数据结构。
用已有 JSON Schema 检查数据是否满足类型、必填和范围规则,输出不满足约束的位置。
输入与结果示例
数据:{"age":"18"}
Schema:{"type":"object","properties":{"age":{"type":"integer"}}}
结果:age 的类型校验失败。使用范围与注意事项
- 支持 Draft-07 与常见 format,不加载远程 $ref。
- required 约束属性存在,不自动意味着非空;请结合 type 与 minLength。
常见问题
从样本生成的 Schema 能直接当接口合同吗?
不能。样本无法证明所有合法值、必填规则或业务边界,应先经接口负责人确认。
JSON Schema 校验:用正常样本和反例检查规则
左侧输入数据,右侧输入 JSON Schema。点击示例按钮会替换两份输入;先看校验是否通过,再结合错误路径和规则修改数据或 Schema。
可运行示例与预期结果
正常样本
JSON 数据
{
"name": "小林",
"age": 18
}JSON Schema
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"age": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}预期 valid: true,errors: []。
缺少必填字段
JSON 数据
{
"age": 18
}JSON Schema
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"age": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}预期 valid: false,required 提示缺少 name;补上非空字符串 name 后再运行。
字段类型错误
JSON 数据
{
"name": "小林",
"age": "18"
}JSON Schema
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"age": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}预期 /age 的 type 校验失败;规则要求整数,字符串 "18" 不会自动转换。
不允许额外字段
JSON 数据
{
"name": "小林",
"age": 18,
"debug": true
}JSON Schema
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"age": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}预期 additionalProperties 校验失败;当前规则不允许 debug,需核对接口合同后修改。
结果与错误排查
valid: false 和工具报错有什么区别?
valid: false 表示校验已完成,但数据没有满足 Schema;errors 给出不满足的规则。JSON 语法无效、Schema 无效或引用无法解析时,工具会报错,需要先修正输入。
如何阅读 errors?
instancePath 是数据位置,schemaPath 是规则位置,keyword 是未满足的约束,params 提供缺失字段等细节。根对象的 instancePath 可以为空;required 缺失字段看 params.missingProperty。
required 是否表示不能是空字符串或 null?
required 只要求属性存在。非空字符串应同时使用 type: "string" 和 minLength: 1;是否允许 null 要在 type 中明确声明。工具不会自动补默认值或转换类型。
支持什么版本和引用?
使用 Draft-07,支持 email、date-time 等常见 format 和同一份 Schema 内的本地引用。不加载远程 $ref,也不把其他草案版本当作已支持功能。
没有 Schema 怎么开始?
可以从 JSON 样本生成 Schema 草稿,再由接口负责人确认 required、类型、额外字段和业务范围。一个样本不能证明完整接口合同。