JSON.CN让代码更轻

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、类型、额外字段和业务范围。一个样本不能证明完整接口合同。