Java 在Spring Boot 2中使用自定义ObjectMapper返回ISO-8601日期

Java 在Spring Boot 2中使用自定义ObjectMapper返回ISO-8601日期,java,spring,spring-boot,java-time,jackson-databind,Java,Spring,Spring Boot,Java Time,Jackson Databind,我希望我的LocalDateTimes作为ISO-8601字符串(例如“2020-10-12T10:57:15Z”)从我的Spring REST控制器返回。这在以前是有效的,但是现在我使用了一个定制的Jackson2ObjectMapper这些日期被作为数组返回:[2020,10,12,10,57,15,200000000] 为什么会发生这种情况?我如何在仍然返回ISO-8601日期的情况下自定义ObjectMapper?JacksonAutoConfiguration创建一个ObjectMap

我希望我的
LocalDateTime
s作为ISO-8601字符串(例如
“2020-10-12T10:57:15Z”
)从我的Spring REST控制器返回。这在以前是有效的,但是现在我使用了一个定制的Jackson2
ObjectMapper
这些日期被作为数组返回:
[2020,10,12,10,57,15,200000000]


为什么会发生这种情况?我如何在仍然返回ISO-8601日期的情况下自定义
ObjectMapper

JacksonAutoConfiguration
创建一个
ObjectMapper
,关闭
将日期作为时间戳写入
功能,该功能将
LocalDateTimes
作为ISO-8601字符串返回。当您提供自定义的
ObjectMapper
时,此默认自动配置将关闭

这可以通过提供一个
Jackson2ObjectMapperBuilderCustomizer来解决,而不是提供一个自定义的
ObjectMapper
。该bean将被
JacksonAutoConfiguration
用来定制
ObjectMapper
,同时保持自动配置的行为,如关闭
将日期作为时间戳写入
功能

@配置
公共类配置{
@豆子
公共Jackson2ObjectMapperBuilderCustomizer objectMapperBuilderCustomizer(){
返回jacksonObjectMapperBuilder->{
//在维护自动配置的同时自定义ObjectMapper
};
}
}