swagger @ApiModelProperty List 属性的示例值

我有一个类,其中有一个属性是List

 public class MyClass { .... @ApiModelProperty(position = 2) private List productIdentifiers; .... } 

此代码生成示例值,如下所示:

 { "customerId": "1001", "productIdentifiers": [ "string" ], "statuses": [ "NEW" ] } 

此处显示的示例值无效。 我期望的示例值应该是:

 { "customerId": "1001", "productIdentifiers": [ "PRD1", "PRD2", "PRD3" ], "statuses": [ "NEW" ] } 

我尝试传递示例属性如下,但它没有生成正确的值:

 @ApiModelProperty(position = 2, example = "PRD1, PRD2, PRD3") // This generates -> "productIdentifiers": "PRD1, PRD2, PRD3" // Its not json array @ApiModelProperty(position = 2, example = "[\"PRD1\", \"PRD2\", \"PRD3\"]") // This generates -> "productIdentifiers": "[\"PRD1\", \"PRD2\", \"PRD3\"]" // Its too not json array 

有什么办法可以为List属性生成适当的示例值吗?

更新:

我尝试过@nullpointer和@Zeeshan Arif建议的解决方案

 @ApiModelProperty(position = 2, dataType="List", example = "PRD1, PRD2, PRD3") private List productIdentifiers; //This generates -> `"productIdentifiers": "PRD1, PRD2, PRD3"` 

更新2:

试图采用以下方法, 但没有产生适当的反应

 @ApiModelProperty(position = 2, dataType="java.util.List", example = "PRD1, PRD2, PRD3") // This generates -> "productIdentifiers": "PRD1, PRD2, PRD3" @ApiModelProperty(position = 2, dataType="String[]", example = "PRD1, PRD2, PRD3") // This generates -> "productIdentifiers": "PRD1, PRD2, PRD3" 

我对swagger jar的maven依赖是:

  io.springfox springfox-swagger2 2.5.0   mapstruct org.mapstruct    

更新 此问题的github票证

TLDR:Swagger-API的贡献者之一已经致力于在3.0.0版本中添加此function,但目前还不确定何时发布。 目前它位于Swagger-API GitHub的feature / 3.0.0-rc2分支上

我已经和Swagger一起工作了将近两个月,随着我们项目的进展,这样的问题出现了。 现在我做了一些研究并阅读了Swagger-API的GitHub页面,这个function根本不起作用。

如此处所述和[这里将是另一个链接,但我的声誉不足以发布超过2个链接]自2015年8月以来已经多次请求此function,运气不佳。

现在关于Swagger-API github上的这个问题 ,其中一个贡献者评论道:

这需要对模型进行重大的重构,这正在进行中。 2017年3月3日

这导致后来的评论:

将支持3.0.0支持,详情请见function/ 3.0.0-rc2分支。 2017年6月27日

2017年8月9日,有人询问3.0.0版本何时发布没有进一步回复。

总而言之,对数组/列表的示例的支持已经开始工作,并且应该在3.0.0版本中可用,但是没有关于何时发布的新闻。

您只需使用Reflection符号。 运用

 @ApiModelProperty(dataType = "[Ljava.lang.String;") 

工作正常,但我不能举例。

这是结果:

 { "field": [ "string" ] } 

尝试初始化@ApiModelProperty ,如下所示:

 public class MyClass { .... @ApiModelProperty( position = 2, datatype="List", example = "PRD1, PRD2, PRD3" ) private List productIdentifiers; .... } 

一个丑陋的解决方法,直到我们正确支持这个function,这为只有一个元素的列表生成示例,但至少允许显示比"string"更有用的东西是使用allowableValues

 @ApiModelProperty(position = 2, allowableValues = "PRD1") // This generates -> "productIdentifiers": ["PRD1"] 

我设法让这个工作,生成一个字符串列表。

在ApiModelProperty中,将数据类型定义为List,并按如下方式编写示例:

 example = "[AddLine1,AddLine2,AddLine3,AddLine4]" 

这是我的例子:

 @ApiModelProperty(value = "Address", name = "addLines", dataType = "List", example = "[AddLine1,AddLine2,AddLine3,AddLine4]") 

当我渲染swagger页面时,我得到以下输出:

 "addLines": [ "AddLine1", "AddLine2", "AddLine3", "AddLine4" ],