Spring Boot Jackson 和数据序列化

Posted

技术标签:

【中文标题】Spring Boot Jackson 和数据序列化【英文标题】:Spring Boot Jackson and Data serialization 【发布时间】:2017-09-09 16:38:49 【问题描述】:

在我的 Spring Boot 应用程序中,我使用带有 @RestController 的以下 DTO:

public abstract class ComparableQuery extends BaseQuery 

    private final Object value;

...


一切正常,但是当我使用 Spring RestTemplate 并将 java.util.Date 作为 ComparableQuery.value 传递时,我看到 Jackson 将日期对象序列化为以下“神奇”数字:

"value":1009836000000

现在我不明白日期对象是如何序列化为 1009836000000 数字表示的,以及当我使用 AngularJS 作为后端 API 的客户端时如何模拟它。请指教。

【问题讨论】:

我认为这是您的日期值,并以长表示。您可以使用 simpledateformat 或与所需格式等效的任何内容接收此值并对其进行格式化 例如如何在AngularJS中准备这个值? 这个属性有帮助吗? spring.jackson.date-format=yyyy-MM-dd'T'HH:mm:ss.SSSZ 好问题我也需要答案 【参考方案1】:

这是一个与this answer about null handling with jackson and spring boot 中描述的非常相似的问题。

application.properties 中日期格式的相应配置应如下所示:

spring.jackson.write-dates-as-timestamps=false

【讨论】:

以上是关于Spring Boot Jackson 和数据序列化的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Boot 中使用 Jackson 反序列化 Date 对象

Spring boot - Jackson 日期序列化和反序列化

Spring Boot 自定义Jackson ObjectMapper

spring-boot:对日期(Date)类型数据的序列化

spring boot中各种数据不匹配如何处理jackson反序列化错误

spring-boot:对日期(Date)类型数据的序列化