我试图在swagger编辑器2.0中将JSON下面映射到Swagger YAML,我不知道如何将混合数组类型设置到我的模式中
{ "obj1": [ "string data", 1 ] }
现在,我的招摇定义有,
schema: object1: type: array items: type: string
答案取决于您使用的OpenAPI规范版本 .
OpenAPI 2.0(Swagger 2.0)并不真正支持混合型数组和参数 . 你可以做的最多是使用typeless schema {} 为 items ,这意味着项目可以是任何东西(除了 null ) - 数字,对象,字符串等 . 你不能指定 items 的确切类型,但你可以添加 example 包含不同项类型的数组 .
{}
items
null
example
# swagger: '2.0' obj1: type: array items: {} # <--- means "any type" (except null) example: - string data - 1
Note: 无类型模式 {} 只能在主体参数和响应模式中使用 . 路径, Headers 和表单参数需要原始 type 用于数组项 .
type
下一版本OpenAPI 3.0支持混合类型,使用 anyOf , oneOf 和可选的 nullable: true 也允许空值 .
anyOf
oneOf
nullable: true
# openapi: 3.0.1 obj1: type: array items: oneOf: - type: string - type: integer nullable: true # If nulls are allowed
1 回答
答案取决于您使用的OpenAPI规范版本 .
OpenAPI 2.0
OpenAPI 2.0(Swagger 2.0)并不真正支持混合型数组和参数 . 你可以做的最多是使用typeless schema
{}
为items
,这意味着项目可以是任何东西(除了null
) - 数字,对象,字符串等 . 你不能指定items
的确切类型,但你可以添加example
包含不同项类型的数组 .Note: 无类型模式
{}
只能在主体参数和响应模式中使用 . 路径, Headers 和表单参数需要原始type
用于数组项 .OpenAPI 3.0
下一版本OpenAPI 3.0支持混合类型,使用
anyOf
,oneOf
和可选的nullable: true
也允许空值 .