3

我正在使用SpringFox (Swagger)来记录我的 REST API。Swagger 的一个很好的特性是显示示例模型和数据类型格式。

现在,我将我的 API 配置为以毫秒为单位生成和使用日期,但是当我查看示例 JSON 模型时,日期格式如下:"2015-09-21T00:51:32.617Z". 请参阅下面的屏幕截图。是否可以告诉 SpringFox (Swagger) 如何正确格式化日期?

在此处输入图像描述

4

3 回答 3

4

你可以试试:

   Docket docket = new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(getApiInfo())
                    .directModelSubstitute(YourDateTimeClass.class, Integer.class);

基本上,您是在告诉 Swagger 用可以表示毫秒的整数替换日期类。

于 2015-11-04T15:15:59.143 回答
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/

于 2016-07-11T11:52:43.517 回答
0

我遇到了和你类似的问题,我通过在我的 Spring Bootapplication.properties文件中添加以下配置来解决它:

spring.jackson.date-format=com.fasterxml.jackson.databind.util.ISO8601DateFormat

于 2017-05-31T05:29:50.047 回答