通过Swagger / OpenAPI为additionalProperties指定多个类型

时间:2017-09-28 15:07:56

标签: json yaml swagger openapi

我希望在OpenAPI中表示以下JSON对象:

{
  "name": "Bob",
  "age": 4,
  ...
}

属性和属性名称的数量未完全预先确定,因此我希望使用additionalProperties。但是,我不太确定如何通过OpenAPI / Swagger 2.0来表示它。我试过这个:

Person:
  type: object
  additionalProperties:
    type:
      - int
      - string

或等效的JSON:

{
  "Person": {
    "type": "object",
    "additionalProperties": {
      "type": ["int", "string"]
    }
  }
}

但这并不是很有效。有没有办法保持我想要表示的JSON对象的结构,特别是字符串和整数,而不是任意对象类型?

1 个答案:

答案 0 :(得分:6)

OpenAPI / Swagger 2.0不支持多类型值。你可以做的最多就是使用typeless schema,这意味着附加属性可以是任何东西 - 字符串,数字,布尔值等等 - 但是你不能指定确切的类型。

Person:
  type: object
  additionalProperties: {}

这相当于:

Person:
  type: object


您可能希望切换到支持oneOf的OpenAPI 3.0,以便您可以使用:

Person:
  type: object
  additionalProperties:
    oneOf:
      - type: string
      - type: integer