SpringFox Date格式为毫秒

时间:2015-09-21 01:50:22

标签: documentation swagger swagger-2.0 springfox

我使用SpringFox (Swagger)来记录我的REST API。 Swagger的一个不错的功能是显示示例模型和数据类型格式。

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

enter image description here

3 个答案:

答案 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