我们有一个Springboot项目,我们的生产应用程序类包含以下注释:@EnableWebMvc(),因此对端点的调用将返回以下内容。请注意,日期以长值形式返回。

{
 "expirationDate": 1597291200000,
 "dateOfBirth": 271828800000
}


但是,在应用程序类的开发分支中,我们删除了该注释,并且在调用相同的端点后获得了波纹管响应。请注意,现在日期将作为时间戳返回。我们如何才能更改application.yaml,以便在没有@EnableWebMvc()注释的情况下长时间接收日期。对于我们来说,最好的解决方案是在application.yaml中,但任何其他建议都值得欢迎。

{
  "expirationDate": "2020-08-13T04:00:00.000+0000",
  "dateOfBirth": "1978-08-13T04:00:00.000+0000"
}

最佳答案

使用Jackson提供的JsonFormat注释可以做到这一点。在您作为响应返回的相应Entity类中,使用JsonFormat注释字段并提供形状注释Shape.NUMBER。

        @JsonFormat(shape = JsonFormat.Shape.NUMBER)
        final ZonedDateTime expirationDate;

        @JsonFormat(shape = JsonFormat.Shape.NUMBER)
        final ZonedDateTime dateOfBirth;


这也可以通过属性文件全局实现。

物产

spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = true


YAML

spring:
  jackson:
    serialization:
      WRITE_DATES_AS_TIMESTAMPS: true

10-07 23:16