Swagger Java ApiResponse Map

Gre*_*ash 5 java swagger springfox

我正在尝试获取 Swagger UI 文档中的响应示例值以正确显示地图。这是我的地图的样子:Map<Long, List<UserRole>>。UserRole 对象只有两个字段,roleId 和 roleName。

根据 Swagger 注释的 Javadoc, responseContainer 支持 Valid values are "List", "Set" or "Map". Any other value will be ignored.

但是,这是 SpringFox Swagger 公共库内部的实现:

  if ("List".compareToIgnoreCase(responseContainer) == 0) {
    return Optional.of(resolver.resolve(List.class, response));
  } else if ("Set".compareToIgnoreCase(responseContainer) == 0) {
    return Optional.of(resolver.resolve(Set.class, response));
  } else {
    return Optional.of(resolver.resolve(response));
  }
Run Code Online (Sandbox Code Playgroud)

显然这不支持 Map。

如果我没有指定响应类型:@ApiResponse(code = 200, message = "OK")那么 Swagger 文档如下所示:

{
  "additionalProp1": [
    {
      "roleId": 1234,
      "roleName": "User"
    }
  ],
  "additionalProp2": [
    {
      "roleId": 1234,
      "roleName": "User"
    }
  ],
  "additionalProp3": [
    {
      "roleId": 1234,
      "roleName": "User"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这几乎是正确的,只是我需要additionalPropX用长值替换该字段。我已经尝试设置实例几种不同的方式:@ApiResponse(code = 200, message = "OK", examples = @Example(value = @ExampleProperty(value = "Puppy"))),。我不认为这是在 SpringFox 中实现的。我尝试创建一个新的 POJO 来包装我的响应,但这只会导致一些非常奇怪的响应示例。

我正在通过 Gradle 使用最新的 Swagger 依赖项:

compile 'io.springfox:springfox-swagger-ui:2.9.2'
compile 'io.springfox:springfox-swagger2:2.9.2'
Run Code Online (Sandbox Code Playgroud)

这可能吗?