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

JSON Schema中if条件无法同时匹配多个属性的问题咨询

解决JSON Schema中if条件同时校验多个属性的问题

你的问题出在if条件的schema没有强制要求country和street_address必须同时存在并满足约束。JSON Schema的properties字段仅定义属性的规则,但默认不会强制这些属性必须出现,也不会限制实例包含其他属性。这就导致只要实例满足其中一个属性的const规则,就会触发then逻辑,而非同时校验两个属性。

修复方案

在if的schema中添加required数组,明确指定必须同时存在country和street_address两个属性,确保只有当两者都存在且值匹配const时,才会触发then的约束。

修改后的完整JSON Schema:

{
  "type": "object",
  "properties": {
    "street_address": {"type": "string"},
    "country": {
      "default": "United States of America",
      "enum": ["United States of America", "Canada"]
    }
  },
  "if": {
    "properties": {
      "country": {"const": "United States of America"},
      "street_address": {"const": "my_address"}
    },
    "required": ["country", "street_address"]
  },
  "then": {
    "properties": {
      "postal_code": {"pattern": "[0-9]{5}(-[0-9]{4})?"}
    }
  }
}

额外说明

如果需要严格限制实例在满足if条件时,不能包含country和street_address之外的其他属性,可以在if的schema中追加"additionalProperties": false:

"if": {
  "properties": {
    "country": {"const": "United States of America"},
    "street_address": {"const": "my_address"}
  },
  "required": ["country", "street_address"],
  "additionalProperties": false
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:27:51