使用Swagger注释显示自定义HashMap键

时间:2018-05-30 14:50:52

标签: java annotations swagger swagger-2.0 openapi

我正在尝试从Java代码生成Swagger文档,我的一个嵌套模型属性是HashMap。生成的示例如下:

      "additionalProp1": {
        "customObject": {}
      },
      "additionalProp2": {
        "customObject": {}
      },
      "additionalProp3": {
        "customObject": {}
      }

我需要的是:

      "objectName": {
        "customObject": {}
      }

换句话说,我需要告诉他们additionalProp字符串应该是什么,最好不要重复三次。有没有办法使用Swagger Annotations?我宁愿不对一个完整的例子进行硬编码,因为CustomObject本身具有许多属性,并且仍在不断变化。是否有可能按照

的方式做点什么

@ApiModelProperty(example = "objectName:{package.CustomObject}")

(除了实际有效的东西)?

我尝试过以这种方式和其他方式玩@ApiModelProperty,但到目前为止还没有成功。

@ApiModelProperty
public HashMap<String, CustomObject> getObjectMap(){
    return objectMap;
}

我正在使用1.5.18 Swagger罐子。到目前为止,我只能找到使用直接yaml或json操作解决的类似问题。

1 个答案:

答案 0 :(得分:0)

我确实有一个hacky解决方案,我按如下方式创建了一个虚拟类:

public class SwaggerObject {
    public CustomObject getObjectName() {
        return null;
    }
}

并在主要代码中添加:

@ApiModelProperty(dataType="package.SwaggerObject")
public HashMap<String, CustomObject> getObjectMap(){
    return objectMap;
}

生成

"objectName": {
  "customObject": {}
}
然而,为它需要一个全新的课程似乎很愚蠢。它还将虚拟类添加到底部的模型中,这可能会造成混淆。