我正在使用SpringFox (Swagger)来记录我的 REST API。Swagger 的一个很好的特性是显示示例模型和数据类型格式。
现在,我将我的 API 配置为以毫秒为单位生成和使用日期,但是当我查看示例 JSON 模型时,日期格式如下:"2015-09-21T00:51:32.617Z"
. 请参阅下面的屏幕截图。是否可以告诉 SpringFox (Swagger) 如何正确格式化日期?
我正在使用SpringFox (Swagger)来记录我的 REST API。Swagger 的一个很好的特性是显示示例模型和数据类型格式。
现在,我将我的 API 配置为以毫秒为单位生成和使用日期,但是当我查看示例 JSON 模型时,日期格式如下:"2015-09-21T00:51:32.617Z"
. 请参阅下面的屏幕截图。是否可以告诉 SpringFox (Swagger) 如何正确格式化日期?
你可以试试:
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(getApiInfo())
.directModelSubstitute(YourDateTimeClass.class, Integer.class);
基本上,您是在告诉 Swagger 用可以表示毫秒的整数替换日期类。
这与底层的 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/
我遇到了和你类似的问题,我通过在我的 Spring Bootapplication.properties
文件中添加以下配置来解决它:
spring.jackson.date-format=com.fasterxml.jackson.databind.util.ISO8601DateFormat