You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSON Schema层面配置规则禁止未定义额外键通过校验

JSON Schema 禁止未定义字段配置方案

要实现禁止schema未定义的键通过校验,只需要在object类型的schema根节点下添加"additionalProperties": false配置即可,不需要使用anyOf/allOf/oneOf相关规则。

你现有的schema存在两处问题:

  1. required字段错误写在了properties对象内部,正确位置应该和properties平级
  2. 缺少additionalProperties: false配置来限制额外字段

修正后的完整schema如下:

{
  "$schema": "https://tools.ietf.org/html/draft-zyp-json-schema-03",
  "title": "ResponseMessageBody",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "messagename": {
      "type" : "string"
    },
    "Offset": {
      "type": "number",
      "minimum": 0,
      "maximum": 4
    },
    "Interval": { 
      "type": "number",
      "minimum": 0,
      "maximum": 10 
    },
    "KeyIndex": {
      "type": "number",
      "minimum": 0,
      "maximum": 15
    },
    "Timestamp": {
      "type": "string",
      "minLength": 24,
      "maxLength": 24
    },
    "SeqNumber": {
      "type": "number",
      "minimum": 0,
      "maximum": 4294967295
    },
    "Current": {
      "type": "number",
      "minimum": 0,
      "maximum": 4294967295
    }
  },
  "required" : ["messagename"]
}

配置后可完全满足你的需求:

  • 必填字段messagename存在时,其他可选字段可传可不传,校验通过
  • 出现任意properties中未定义的键(比如拼写错误的Interval1),校验直接失败
  • 不需要在业务代码中加额外校验逻辑,完全由schema规则实现

如果你的实际需求是所有字段都必填,直接把required数组修改为包含所有字段名即可,之前添加的anyOf规则可以完全删除。

内容的提问来源于stack exchange,提问作者alshamsh93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:39:03