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

如何在OpenAPI 3.x中定义键任意但值类型固定的对象?

在OpenAPI 3.x中定义键值格式固定的动态对象

要定义一个键可自定义但需符合特定格式、值有固定类型要求的对象(比如示例中的 keyValues: {"a": ["1", "2"], "b": ["3"]}),可以通过OpenAPI 3.x的对象约束特性实现,具体分两种场景:

场景1:键为任意字符串,值为固定类型

如果键可以是任意字符串,只需约束值的类型,用additionalProperties即可:

properties:
  keyValues:
    type: object
    # 所有动态键对应的值必须是字符串数组
    additionalProperties:
      type: array
      items:
        type: string

场景2:键需要匹配特定格式

如果键必须符合某种格式(比如正则规则),用patternProperties指定键的匹配模式,还可以搭配additionalProperties: false禁止不符合规则的键:

properties:
  keyValues:
    type: object
    # 键必须以字母开头,后续可包含字母、数字或下划线
    patternProperties:
      "^[a-zA-Z][a-zA-Z0-9_]*$":
        type: array
        items:
          type: string
    # 不允许出现不符合上述规则的键
    additionalProperties: false

重要提示

你提供的示例中使用的keys和values字段并非OpenAPI 3.x的标准语法,实际编写规范定义时,需要替换为上述additionalProperties或patternProperties,才能被各类OpenAPI工具正确识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 07:35:00