如何使用 Jackson 启用 JSR310 对 LocalDate 的支持?

问题描述 投票:0回答:3

我已经将 JS310 依赖添加到 Maven 中并刷新了依赖:

<dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
            <version>2.13.0</version>
</dependency>

在域中:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
LocalDate start;

但是,我收到此错误:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type java.time.LocalDate not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling

java jackson localdate
3个回答
41
投票

该错误是指示性的,并解释您尚未注册

JavaTimeModule
模块,如
datetime
中记录的那样:要注册它,您可以通过这种方式(或我之前添加的链接中解释的其他等效方式)进行注册,取决于您正在使用的杰克逊库版本):

ObjectMapper mapper = JsonMapper.builder()
    .addModule(new JavaTimeModule())
    .build();

1
投票
默认情况下不支持

java.time.LocalDate
,因此我们必须注册该模块。添加此行用于注册 -

DatabindCodec.mapper().registerModule(new JavaTimeModule());

0
投票

终于我解决了这个问题:使用 @配置 公共类 JacksonConfig {

@Bean
public ObjectMapper objectMapper() {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.registerModule(new JavaTimeModule());
    
    return objectMapper;
}

} 并使用@Autowired 私有 ObjectMapper 对象映射器;

如果你创建ObjectMapper objectMapper=new ObjectMapper();在你的方法里面它不会工作。 还有一件事我使用了 springboot 项目,所以我不需要 jsr 310 依赖

© www.soinside.com 2019 - 2024. All rights reserved.