我试图将以下 JSON 映射到 OpenAPI 2.0 (Swagger 2.0) YAML 定义,但我不确定如何将混合数组类型设置到我的架构中:
{
"obj1": [
"string data",
1
]
}
现在,我的 OpenAPI 定义有:
schema:
object1:
type: array
items:
type: string
但这不允许数组内的整数。
有没有办法定义一个混合类型的数组?
我试图将以下 JSON 映射到 OpenAPI 2.0 (Swagger 2.0) YAML 定义,但我不确定如何将混合数组类型设置到我的架构中:
{
"obj1": [
"string data",
1
]
}
现在,我的 OpenAPI 定义有:
schema:
object1:
type: array
items:
type: string
但这不允许数组内的整数。
有没有办法定义一个混合类型的数组?
答案取决于您使用的 OpenAPI 规范版本。
type
可以是类型列表,因此您可以将架构编写为:
# openapi: 3.1.0
obj1:
type: array
items:
type: [string, integer]
# or if nulls are allowed:
# type: [string, integer, 'null']
oneOf
OpenAPI 3.0 中使用/支持混合类型,anyOf
并且nullable: true
还可以选择允许空值。
# openapi: 3.0.1
obj1:
type: array
items:
oneOf:
- type: string
nullable: true # If nulls are allowed
- type: integer
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
注意:无类型模式{}
只能用于正文参数和响应模式。路径、标题和表单参数需要type
数组项的原语。