【问题标题】:How to tell Swagger an attribute is a Map如何告诉 Swagger 一个属性是一个 Map
【发布时间】:2016-05-26 11:54:35
【问题描述】:

我正在与 Jersey 开发一项宁静的服务。但是,我正在使用 Swagger 作为文档。我的模型具有地图类型的属性。 Swagger 将这个属性显示为一个 Object(不是特定类型)。那么如何告诉 Swagger 这个属性来自 Map 类型呢?

public class Model {
    private String name;
    private Map<Integer, String> myMap;

    public Model(){
        super();
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Map<Integer, String> getMyMap() {
        return myMap;
    }
    public void setMyMap(Map<Integer, String> myMap) {
        this.myMap = myMap;
    }
}

宁静的服务:

@POST
@Path("/createBundle")
@Consumes({MediaType.APPLICATION_JSON})
@ApiOperation(value = "Create Bundle ",
    notes = "",
    response = Model.class)
    public Model createBundle(Bundle bundle){
        return new Model();
    }

我需要 Swagger 将其显示为 Map&lt;Integer, String&gt; 的类型。

Swagger 将文档显示为这张图片。

【问题讨论】:

    标签: java tomcat jersey swagger


    【解决方案1】:

    您可以在@ApiOperation注解中设置响应类型:

    @ApiOperation(value = "Find thingies as Map",
        notes = "Multiple thingies can be returned, <code>id</code> is the ID field",
        response = java.util.Map.class)
    

    【讨论】:

    • 感谢您的回答,但似乎有些不清楚。我在问题中添加了更多细节
    • 很遗憾,我不明白您添加了什么。请添加您的代码和生成的 JSON。
    • 您知道 JSON 没有像 Map&lt;Integer, String&gt; 这样的 Java 类型的概念,对吧?你必须在这里推出你自己的,看看我更新的答案
    • @JohannesJander 这怎么可能?不幸的是,它对我不起作用。
    猜你喜欢
    • 1970-01-01
    • 2018-06-18
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多