如何定义HashMap <string,list <object =“”>&gt; swagger yml的财产?

时间:2017-07-11 06:55:27

标签: java typescript yaml swagger swagger-2.0

我使用swagger在Java和Type脚本中生成类。 我有问题定义map属性与对象列表作为值。我试着定义如下:

DataMap
type: object
additionalProperties:
 #type: array -- This config does not work.
  $ref: '#/definitions/Data'

在java中的代码后面生成的yml定义:

  class DataMap extends HashMap<String, Data> {
    }

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

 class DataMap extends HashMap<String, List<Data>> {
        }

 class DataInfo {
     Map<String, List<Data>> dataMap;
   }

swagger 2.0可以实现吗?我正在考虑定义另一个扩展ArrayList的DataList类,然后将此类用作Map的值。

--------------更新&amp; ANSWER -----------

谢谢@nickb

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

 DataInfo
    type: object
    properties:
    dataMap:
     type: object
     additionalProperties:
        type: array 
        items:
          $ref: '#/definitions/Data'

1 个答案:

答案 0 :(得分:2)

我使用Swagger codegen v2.1.6以及以下模型定义:

 foo:
    properties:
      baz:
        type: string
  bar:
    properties:
      map:
        type: object
        additionalProperties:
          type: array
          items:
            $ref: '#/definitions/foo'

这会生成一个Bar Java类,其中包含以下字段:

Map<String, List<Foo>> map = new HashMap<String, List<Foo>>();

如果您看到不同的行为,您可能会偶然发现回归。尝试测试早期版本,或者专门查看2.1.6是否正确生成此模型。