20

モデル セクションで HashMap または Generic Object タイプを定義する方法はありますか? 製品を返す REST サービスがあり、それらの製品にはさまざまなオプションがあります。options プロパティは基本的に HashMap であり、id はオプション名で、その値はオプション値です。

4

2 に答える 2

35

はい、可能です。

OpenAPI (fka. Swagger) 2.0 および 3.0 では、ハッシュマップは常に<string, something>マップです。

  • キーは常に文字列であり、定義する必要はありません。
  • 値の型はあなたが望むものであり、で定義されていadditionalPropertiesます。

<string, string>このようなハッシュマップを記述したいとしましょう:

{
  "key1": "value1",
  "key2": "value2"
}

対応する OpenAPI 2.0 定義は次のようになります。

definitions:
  StringStringMap:
    type: object
    additionalProperties:
      type: string

OpenAPI 3.0 では、定義は次のようになります。

components:
  schemas:
    StringStringMap:
      type: object
      additionalProperties:
        type: string


このような<string, object>ハッシュマップ

{
  "key1": {"someData": "data", "someOtherData": true},
  "key2": {"someData": "data2", "someOtherData": false}
}

OpenAPI 2.0 では次のように定義されます。

definitions:
  ComplexObject:
    type: object
    properties:
      someData:
        type: string
      someOtherData:
        type: boolean

  StringObjectMap:
    type: object
    additionalProperties:
      $ref: "#/definitions/ComplexObject"

および OpenAPI 3.0 では:

components:
  schemas:
    ComplexObject:
      type: object
      properties:
        someData:
          type: string
        someOtherData:
          type: boolean

    StringObjectMap:
      type: object
      additionalProperties:
        $ref: "#/definitions/ComplexObject"

これについては、私の OpenAPI (fka Swagger チュートリアル) のパート 4 で詳しく説明しました。

OpenAPI (fka. Swagger) 仕様でも、これについて簡単に説明されています。

于 2016-04-19T07:30:14.277 に答える