Kal*_*ndu 9 jackson spring-boot jackson-databind
Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling
Run Code Online (Sandbox Code Playgroud)
我在使用 gradle 的 spring boot 项目中遇到了这个错误。我也添加了下面给出的 jsr310 的 gradle 依赖项,但它仍然不起作用。
implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.13.3'
Run Code Online (Sandbox Code Playgroud)
我该如何修复这个错误?我的项目使用java 17和spring 2.6.7。谢谢!
Ton*_*oni 11
JavaTimeModule
应明确注册:
@Configuration
public class JacksonConfiguration {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
return mapper;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
第一个解决方案应该与之前的jackson-datatype-jsr310
版本一起使用。由于您添加了 version ,根据答案,该模块应如下所示注册。2.x
2.9
2.13.3
@Configuration
public class JacksonConfiguration {
@Bean
public ObjectMapper objectMapper() {
return JsonMapper.builder()
.addModule(new JavaTimeModule())
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
更新2:
从 Jackson 2.2 开始,可以使用服务提供商接口 (SPI) 功能自动发现模块。您可以通过指示 ObjectMapper 查找并注册所有模块来激活此功能:
// Jackson 2.10 and later
ObjectMapper mapper = JsonMapper.builder()
.findAndAddModules()
.build();
// or, 2.x before 2.9
ObjectMapper mapper = new ObjectMapper();
mapper.findAndRegisterModules();
Run Code Online (Sandbox Code Playgroud)
供参考:jackson-modules-java8 - 注册模块
小智 2
new ObjectMapper().registerModule(new JavaTimeModule());
Run Code Online (Sandbox Code Playgroud)
希望这对你有帮助。
归档时间: |
|
查看次数: |
16663 次 |
最近记录: |