我使用swagger来测试我的其余api,我的实体类的一个属性是一个日期字段,我需要yyyy-mm-dd格式的日期,但是swagger模型模式将此字段显示为日期 - 时间而不是日期字段,因此它给出了时间和区域的日期。如何将此日期时间转换为日期字段?
我有一个java实体类TimeEntry.java,它的一个属性是Date,它看起来像这样。
@ApiModelProperty(required = true)
@JsonFormat(pattern = DATE_FORMAT)
private Date date;
对于此字段,在swagger UI模型架构上,字段日期显示为“date”:“2016-01-08T22:34:22.337Z”但我需要将其作为“日期”:“2016-01-08 “。
我尝试了以下内容:
1
@ApiModelProperty(required = true, dataType="date")
@JsonFormat(pattern = DATE_FORMAT)
private Date date;
2.Tried跟随这段代码(覆盖OverrideConvertor类)但找不到swagger-core 1.3版本的mvn repo。仅提供1.5版本https://github.com/swagger-api/swagger-core/wiki/overriding-models
请帮忙。
答案 0 :(得分:7)
java.util.Date
的问题(实际上是问题之一)是它确实是一个日期时间,并且招摇正确地检测到它。我确实理解@JsonFormat
也是一种解决方法 - 在它的类型检测过程中,swagger不支持该注释。
您有三种方法可以正确处理日期类型。
1)使用Joda的LocalDate
作为数据类型。如果您声明private LocalDate date
,则会显示正确。
2)使用java8' s LocalDate
,与上面相同。
3)在检测注释中的类型时,告诉swagger使用上述任何一种,但保持属性为java.util.Date
类型:
@ApiModelProperty(required = true, dataType = "org.joda.time.LocalDate")
然后,在扫描时,swagger会将其检测为date
格式化的字符串。
答案 1 :(得分:7)
我的队友找到了解决办法。我们需要将springfox版本升级到2.3.0,之前我们使用的是springfox 2.2.2版本。在旧版本中,swagger的@ApiModelPreporty具有名为“example”的属性,该属性没有做任何事情。从版本2.3.0版本开始,这个“示例”开始工作。因此,在我们将springfox版本升级到2.3.0之后,我们所要做的就是如下所示。
@ApiModelProperty(required = true,example = "2016-01-01")
@JsonFormat(pattern = DATE_FORMAT)
private LocalDate date;
以下是我们发现此信息的链接: