如何在Swagger 2.0编辑器中创建不同的元素类型

Rjk*_*Rjk 2 swagger swagger-2.0

我试图在swagger编辑器2.0中将JSON下面映射到Swagger YAML,我不知道如何将混合数组类型设置到我的模式中

{
  "obj1": [
     "string data",
     1
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在,我的招摇定义有,

schema:
  object1:
    type: array
    items:
      type: string
Run Code Online (Sandbox Code Playgroud)

Hel*_*len 5

答案取决于您使用的OpenAPI规范版本.

OpenAPI 2.0

OpenAPI 2.0(Swagger 2.0)并不真正支持混合型数组和参数.你能做的最重要的是使用无类型模式 {}items,这意味着该项目可以是任何东西(除了null) -数字,对象,字符串,等等.你不能指定具体类型items,但你可以添加example不同的阵列项目类型.

# swagger: '2.0'

obj1:
  type: array
  items: {}  # <--- means "any type" (except null)
  example:
    - string data
    - 1
Run Code Online (Sandbox Code Playgroud)

注意:无类型模式{}只能用于主体参数和响应模式.路径,标题和表单参数需要type数组项的基元.

OpenAPI 3.0

混合类型,在未来的版本,3.0 OpenAPI的支持,使用anyOf,oneOf以及可选nullable: true中,也允许空值.

# openapi: 3.0.1

obj1:
  type: array
  items:
    oneOf:
      - type: string
      - type: integer
    nullable: true  # If nulls are allowed
Run Code Online (Sandbox Code Playgroud)