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

如何限制数组类型取值?JSON Schema配置遇验证问题求助

问题解决:JSON Schema数组枚举验证错误

先翻译你遇到的验证错误:

请求验证失败:错误:querystring/models必须等于允许值之一,querystring/models必须匹配anyOf中的一个模式。

你的问题出在数组的Schema配置上:当前给models数组设置了anyOf: [models],这是错误用法——这个配置要求整个数组对象本身符合models的字符串枚举规则,而非数组里的每个元素符合。所以传多个元素时,整个数组不是单个字符串,触发验证错误;传单个元素时,后端会把数组转成字符串,也是因为这个错误配置导致的解析异常。

正确配置应该用items关键字指定数组中每个元素的Schema规则,修改后的代码如下:

const models = {
  type: "string",
  enum: [
    "model1",
    "model2",
    "model3",
  ],
};

const cleanQ = {
  type: "object",
  required: ["models"],
  properties: {
    models: {
      type: "array",
      items: models, // 替换原有的anyOf配置
      // 可选配置:如果要求数组至少有一个元素
      // minItems: 1,
      // 可选配置:如果要求数组元素不重复
      // uniqueItems: true
    },
  },
  additionalProperties: false,
};

修改后,前端传递的数组可以包含任意多个(或单个)属于model1/model2/model3的元素,每个元素都会被正确验证,不会再出现之前的错误,后端也不会把数组转换为字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:34:59