jackson - 无法使用 Jackson 将 java.time.LocalDate 序列化为字符串

标签 jackson spring-boot jsr310

我正在使用 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 变量然后它就可以工作了。但我认为上面的属性设置是自动的。另外,如果我没记错的话(我从那时起就决定使用整数数组),那只适用于序列化而不是反序列化(但老实说我不太记得最后一部分是否正确)。

最佳答案

这是know issue在 Spring Boot 中。您需要手动完成。

objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

或更新至1.2.2。

更新: 还有一个way to configure ObjectMapper由 spring 从容器中使用。

关于jackson - 无法使用 Jackson 将 java.time.LocalDate 序列化为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32952269/

相关文章:

java - 如何知道 @JsonIgnoreProperties(ignoreUnknown=true) 忽略的所有属性

java - 如何在 Java 中解析 JSON 对象数组

json - 使用 jackson 将 JSON 对象数组映射到 @RequestBody List<T>

java - Android 上的 ThreeTen-Backport 错误 - ZoneRulesException : No time-zone data files registered

java - 在 clojure 中同时支持 xml 和 json REST 响应

java - 在Springboot中,使用@ConfigurationProperties和@PropertySource时如何将属性序列化为对象?

java - 验证一个字段是否存在且有效

java - Spring Boot JPA删除返回200 ok但不能从数据库中删除

java - ThreeTen-Backport 实现与 JSR-310 的向后移植?

java - 这是 jackson-datatype-jsr310 反序列化器中的错误吗?