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

如何在Swagger中让对象属性支持多种数据类型?

解决Swagger/OpenAPI中属性支持多类型的问题

嘿,我来帮你搞定这个API定义的问题!你想要让propertyName支持整数、字符串、布尔三种类型的思路是对的,不过可能是版本兼容性或者写法细节的问题导致你的oneOf配置没生效,我给你分两种情况说明正确的写法:

如果你用的是OpenAPI 3.x(Swagger 3.0及以上版本)

oneOf是OpenAPI 3.x才支持的关键字,你的写法本身没问题,但需要确保你的API定义开头声明了正确的版本。另外如果遇到工具兼容性问题,可以试试用anyOf(和oneOf的区别是,anyOf允许值匹配多个类型,而oneOf要求值只能匹配其中一种,前者在部分旧工具上兼容性更好)。

正确的示例代码:

openapi: 3.0.3
components:
  schemas:
    NameValue:
      type: "object"
      required:
        - "propertyName"
      properties:
        propertyName:
          # 若需要严格互斥类型匹配,将anyOf替换为oneOf即可
          anyOf:
            - type: "integer"
            - type: "string"
            - type: "boolean"

如果你用的是Swagger 2.0(OpenAPI 2.0)

Swagger 2.0并不支持oneOf/anyOf这类关键字,这时候要直接用type数组来声明多种支持的类型:

正确的示例代码:

swagger: "2.0"
definitions:
  NameValue:
    type: "object"
    required:
      - "propertyName"
    properties:
      propertyName:
        type: ["integer", "string", "boolean"]

你可以检查一下自己使用的Swagger/OpenAPI版本,对应上面的写法调整后应该就能生效啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:28:25