【发布时间】:2016-01-02 07:49:40
【问题描述】:
我正在使用 spring-boot 1.2.1.RELEASE 和 jackson 2.6.2,包括 jsr310 数据类型。我正在使用注释 @SpringBootApplication 来启动我的 Spring 应用程序。我有
spring.jackson.serialization.write_dates_as_timestamps = false
在我的 application.properties 中设置(我知道正在读取它,因为我使用banner = false 进行了测试)。
然而 java.time.LocalDate 仍然被序列化为一个整数数组。我没有使用@EnableWebMvc。
如果我添加标签看起来像
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
到我的 LocalDate 变量然后它工作。但我认为上面的属性集是自动的。另外,如果我没记错的话(我刚刚决定使用整数数组),那只适用于序列化而不是反序列化(但老实说,我不太记得最后一部分是否属实)。
【问题讨论】:
-
你注册JSR310的Jackson模块了吗?
objectMapper.registerModule(new JavaTimeModule()); -
这是由 spring-boot 自动完成的,我知道这是因为没有 jackson-datatype-jsr310 添加到我的 pom.xml 中,我得到了 LocalDate 的默认复杂序列化。当我添加数据类型时,我得到了整数数组序列化。
-
Wrt 反序列化:无论序列化设置如何,这两种形式都应该是可以接受的。但是,如果您使用自定义文本格式,则反序列化也需要这样做。
-
几年前我更新到 spring boot 2.X(目前在 2.1.9.RELEASE),所有这些都是不必要的。开箱即用,它转换为字符串,无需配置。
标签: jackson spring-boot jsr310