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

如何编写JSON Schema:数组不可同时包含"none"与其他指定选项

修正后的JSON Schema实现

你当前的Schema仅限制了数组单个元素的可选范围,但未约束数组不能同时包含none与a/b/c。要实现需求,需要将oneOf逻辑移到数组层级,定义两种互斥的合法情况:

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
        "selection": {
            "type": "array",
            "minItems": 1,
            "oneOf": [
                // 情况1:数组仅包含"none"(允许重复)
                {
                    "items": { "const": "none" }
                },
                // 情况2:数组仅包含"a"/"b"/"c",且不含"none"
                {
                    "items": { "enum": ["a", "b", "c"] },
                    "not": { "contains": { "const": "none" } }
                }
            ]
        }
    },
    "required": ["selection"]
}

逻辑说明:

  • oneOf强制数组只能符合以下两种情况之一:
    1. 所有元素都是none,从根源避免混入其他值;
    2. 所有元素属于a/b/c,同时通过not + contains明确禁止数组中出现none;
  • minItems: 1保证数组不为空(若业务允许空数组,可直接移除该约束)。

验证效果:

  • 有效示例["a", "b", "c"]会匹配第二个分支;
  • 有效示例["none"]会匹配第一个分支;
  • 无效示例["a", "b", "none"]不匹配任何分支,验证直接失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:10:28