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

如何为JSON Schema添加基于属性数量的条件约束?

解决JSON Schema中Steps对象的条件必填约束问题

要实现你需要的三个约束,核心是用JSON Schema的if/then条件关键字处理“非空时必须包含键‘0’”的逻辑,以下是完整的Schema实现:

{
  "type": "object",
  "properties": {
    "Steps": {
      "type": "object",
      // 约束2:键只能是0-99的数字
      "patternProperties": {
        "^[0-9]{1,2}$": {
          // 这里填入你对每个Step值的具体约束,比如"type": "string"或"type": "number"等
        }
      },
      // 禁止0-99以外的键
      "additionalProperties": false,
      // 约束3的核心逻辑:当Steps非空时,必须包含"0"键
      "if": {
        "minProperties": 1
      },
      "then": {
        "required": ["0"]
      }
    }
  }
}

关键逻辑说明

  • patternProperties通过正则^[0-9]{1,2}$确保所有键都是0到99的数字,满足约束2;
  • additionalProperties: false防止出现超出0-99范围的非法键;
  • if/then组合实现条件判断:当Steps的属性数量大于0(minProperties:1)时,触发then块的规则,强制要求包含"0"键;当Steps是空对象时,if条件不生效,required约束不会触发,满足约束1。

注意:这个写法依赖JSON Schema draft-07及以上版本,若使用更早版本需升级Schema版本支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:24:58