我使用SpringFox (Swagger)来记录我的REST API。 Swagger的一个不错的功能是显示示例模型和数据类型格式。
现在,我将我的API配置为以毫秒为单位生成和使用日期,但是当我查看示例JSON模型时,日期格式如下:"2015-09-21T00:51:32.617Z"
。见下面的截图。是否有可能告诉SpringFox(Swagger)如何正确格式化日期?
答案 0 :(得分:3)
你可以尝试:
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(getApiInfo())
.directModelSubstitute(YourDateTimeClass.class, Integer.class);
基本上你告诉Swagger用一个可以代表毫秒的Integer替换日期类。
答案 1 :(得分:3)
这与潜在的Jackson序列化器有关。你必须为它设置正确的日期格式,否则默认它使用时间戳。
以下是配置示例
@Configuration
public class WebConfiguration extends WebMvcConfigurerAdapter {
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsonMessageConverter = (MappingJackson2HttpMessageConverter) converter;
ObjectMapper objectMapper = jsonMessageConverter.getObjectMapper();
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
break;
}
}
}
}
这样它将使用ISO-8601日期时间格式。这是另一篇博客文章,介绍了如何设置自己的首选日期格式:http://yysource.com/2016/06/change-default-date-for-jackson-in-spring-boot-application/
答案 2 :(得分:0)
我遇到了类似的问题,我通过在Spring Boot的application.properties
文件中添加以下配置解决了这个问题:
spring.jackson.date-format=com.fasterxml.jackson.databind.util.ISO8601DateFormat