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

如何使用JSON Schema验证数组中至少3个满足x.foo='bar'的对象?

使用JSON Schema验证数组中满足条件的项数量

当然有标准方法实现这个需求,JSON Schema 2019-09及后续版本引入的contains和minContains关键字组合,就是专门用来处理这类“数组中至少N个项满足特定条件”的验证场景。

实现示例

针对你的需求,对应的JSON Schema如下:

{
  "type": "object",
  "properties": {
    "array": {
      "type": "array",
      // 定义单个项需要满足的条件:foo属性值为'bar'
      "contains": {
        "type": "object",
        "properties": {
          "foo": { "const": "bar" }
        },
        "required": ["foo"]
      },
      // 要求至少有3个项满足上述contains定义的条件
      "minContains": 3
    }
  },
  "required": ["array"]
}

关键说明

  • contains:指定数组中单个项必须满足的结构和值约束,这里要求项是包含foo属性且值严格等于bar的对象。
  • minContains:设置满足contains条件的项的最小数量,这里设为3,正好匹配你的需求。
  • required: ["foo"]:确保每个被检查的项都存在foo属性,避免无foo属性的项被误判(如果允许数组项缺失foo属性,可移除这一行,此时这类项不会被计入满足条件的数量)。

验证效果

你提供的示例对象会通过验证,因为数组中恰好有3个符合foo: 'bar'的项;如果数组中符合条件的项少于3个,验证会直接失败。

旧版本兼容说明

如果需要兼容JSON Schema Draft-7及更早版本(这些版本没有minContains),没有完美的标准方法——用allOf叠加多个contains的方式会存在同一元素被重复计数的问题,无法准确验证“至少3个不同项满足条件”。因此优先推荐使用支持2019-09及以后版本的JSON Schema验证工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:15:21