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

JSON Schema校验异常:含D的实例未通过oneOf规则校验

问题原因及解决方法

问题根源

你的JSON Schema中oneOf的两个分支都没有明确指定必填字段,导致测试实例同时满足了两个分支的校验规则:

  • 第一个分支仅定义了B和C的类型约束,但没有要求这两个字段必须存在,所以没有B、C的实例也能通过该分支的校验;
  • 第二个分支定义了D的类型约束,同样没要求D必须存在,但实例里的D符合类型要求,所以也能通过该分支的校验。

而oneOf的规则是实例必须且只能满足其中一个分支,当实例同时满足两个分支时,校验自然失败。

修正后的Schema

给oneOf的两个分支分别添加required关键字,明确各自的必填字段:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://example.com/schemas/test",
  "type": "object",
  "properties": {
    "A": {
      "type": "string"
    }
  },
  "oneOf": [
    {
      "properties": {
        "B": {
          "type": "integer"
        },
        "C": {
          "type": "boolean"
        }
      },
      "required": ["B", "C"]
    },
    {
      "properties": {
        "D": {
          "type": "string"
        }
      },
      "required": ["D"]
    }
  ]
}

验证说明

修正后:

  • 当实例包含D时,仅满足第二个分支(第一个分支要求必须有B和C,实例不满足),符合oneOf规则;
  • 当实例同时包含B和C时,仅满足第一个分支(第二个分支要求必须有D,实例不满足),符合规则;
  • 若实例同时包含B、C和D,则会同时满足两个分支,触发oneOf校验失败,这也符合你预期的(B且C)或D的互斥逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:42:02