我们有一个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