如何在 swagger yml 中定义 HashMap<String, List<Object>> 属性?

nay*_*kam 6 java yaml swagger typescript swagger-2.0

我正在使用 swagger 在 Java 和 Type 脚本中生成类。我在使用对象列表作为值定义地图属性时遇到问题。我试图定义如下:

DataMap
type: object
additionalProperties:
 #type: array -- This config does not work.
  $ref: '#/definitions/Data'
Run Code Online (Sandbox Code Playgroud)

上面的 yml 定义在 java 中生成了以下代码:

  class DataMap extends HashMap<String, Data> {
    }
Run Code Online (Sandbox Code Playgroud)

如何配置 yml 以生成带有数据列表的密钥?类似于以下课程:

 class DataMap extends HashMap<String, List<Data>> {
        }
Run Code Online (Sandbox Code Playgroud)

或者

 class DataInfo {
     Map<String, List<Data>> dataMap;
   }
Run Code Online (Sandbox Code Playgroud)

swagger 2.0 可以做到这一点吗?我正在考虑定义另一个扩展 ArrayList 的 DataList 类,然后使用这个类作为 Map 的值。

--------------更新和回答-----------

谢谢@nickb

我使用 swagger-codegen-maven-plugin version 2.2.1 和 yml 定义来生成地图如下:

 DataInfo
    type: object
    properties:
    dataMap:
     type: object
     additionalProperties:
        type: array 
        items:
          $ref: '#/definitions/Data'
Run Code Online (Sandbox Code Playgroud)

nic*_*ckb 7

我正在使用具有以下模型定义的 Swagger codegen v2.1.6:

 foo:
    properties:
      baz:
        type: string
  bar:
    properties:
      map:
        type: object
        additionalProperties:
          type: array
          items:
            $ref: '#/definitions/foo'
Run Code Online (Sandbox Code Playgroud)

这将生成一个Bar具有以下字段的Java 类:

Map<String, List<Foo>> map = new HashMap<String, List<Foo>>();
Run Code Online (Sandbox Code Playgroud)

如果你看到不同的行为,你可能已经陷入了回归。尝试测试早期版本,或专门查看 2.1.6 是否正确生成此模型。