java - Swagger 的日期字段与日期时间字段

标签 java swagger swagger-ui springfox swagger-maven-plugin

我正在使用 swagger 来测试我的 rest 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”,但我需要它作为“date”:“2016-01-08 “。

我尝试了以下方法:

1.

@ApiModelProperty(required = true, dataType="date")  
@JsonFormat(pattern = DATE_FORMAT)   
private Date date;

2.试图遵循此代码(覆盖 OverrideConvertor 类)但找不到 swagger-core 1.3 版本 mvn repo 。仅提供 1.5 版本 https://github.com/swagger-api/swagger-core/wiki/overriding-models

  1. 显然从 1.5 版本开始,他们已经删除了 OverrideConvertor 类 https://groups.google.com/forum/#!topic/swagger-swaggersocket/ChiknyHZiP4

请帮忙。

最佳答案

java.util.Date 的问题(实际上是问题之一)是它实际上是一个日期时间,而 swagger 正确地检测到了它。我确实知道 @JsonFormat 也是解决此问题的方法——swagger 在类型检测期间不支持该注释。

您有三个选项来正确处理日期类型。

1) 使用 Joda 的 LocalDate 作为数据类型。如果您声明了 private LocalDate 日期,它将正确显示。

2)使用java8的LocalDate,同上。

3) 告诉 swagger 在检测注解中的类型时使用以上任一方法,但将属性保留为 java.util.Date 类型:

@ApiModelProperty(required = true, dataType = "org.joda.time.LocalDate")

然后,在扫描时,swagger 会将其检测为 date 格式的字符串。

关于java - Swagger 的日期字段与日期时间字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34726086/

相关文章:

jenkins - Swagger 和 Jenkins 集成

java - 有没有办法从 io.swagger.models.Swagger 获取 swagger ui html?

java - Java Protocol Buffers 能否在重复字段的列表 getter 上返回 null?

java 图形用户界面 : while loop and if/else statement

java - 选择Java依赖版本

swagger - 如何更改 Swagger-UI "Default"路径

c# - Swagger UI 不会使用 [FromBody] 参数列出我的 Post 方法

java - 如何在 Java 中为 Serpent 生成 PBEKey?

rest - Swag init 只生成 "general API information"

java - Swagger 定制模型