首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在swagger中定义HashMap<String、List<Object>>属性?

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

Stack Overflow用户
提问于 2017-07-11 06:55:27
回答 1查看 5.8K关注 0票数 6

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

代码语言:javascript
运行
复制
DataMap
type: object
additionalProperties:
 #type: array -- This config does not work.
  $ref: '#/definitions/Data'

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

代码语言:javascript
运行
复制
  class DataMap extends HashMap<String, Data> {
    }

如何配置yml以生成包含数据列表的密钥?就像下课一样:

代码语言:javascript
运行
复制
 class DataMap extends HashMap<String, List<Data>> {
        }

代码语言:javascript
运行
复制
 class DataInfo {
     Map<String, List<Data>> dataMap;
   }

如果使用swagger2.0,这有可能吗?我正在考虑定义另一个DataList类,它扩展了ArrayList,然后将该类用作映射的值。

谢谢@nickb

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

代码语言:javascript
运行
复制
 DataInfo
    type: object
    properties:
    dataMap:
     type: object
     additionalProperties:
        type: array 
        items:
          $ref: '#/definitions/Data'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-11 13:14:26

我使用Swagger codegen v2.1.6的模型定义如下:

代码语言:javascript
运行
复制
 foo:
    properties:
      baz:
        type: string
  bar:
    properties:
      map:
        type: object
        additionalProperties:
          type: array
          items:
            $ref: '#/definitions/foo'

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

代码语言:javascript
运行
复制
Map<String, List<Foo>> map = new HashMap<String, List<Foo>>();

如果你看到的是不同的行为,你可能会陷入倒退。尝试测试早期版本,或者具体地查看2.1.6是否正确地生成此模型。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45027428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档