如何修复'com.fasterxml.jackson.databind.JsonMappingException:反序列化属性问题'错误

时间:2019-03-26 07:05:54

标签: java spring spring-boot mapping spring-data-cassandra

我正在使用对象映射器将格式为yyyy-MM-dd的日期字符串转换为com.datastax.driver.core.LocalDate,并将该数据保存到我的Java Spring Boot项目中的Cassandra中。 我在Cassandra中的列的类型是日期,我在Java类中使用com.datastax.driver.core.LocalDate。 但是,当将映射转换为我的Java类时,它会引发错误“ com.fasterxml.jackson.databind.JsonMappingException:反序列化属性'employeedateofbirth'的问题(预期类型:[简单类型,com.datastax.driver.core.LocalDate类];实际类型:java.time.LocalDate),问题:参数类型不匹配”。 我不使用java.time.LocalDate仍然给我参数不匹配错误。

我什至尝试使用以下代码注册模块

ObjectMapper oMapper = new ObjectMapper().registerModule(new ParameterNamesModule()).registerModule(new Jdk8Module()).registerModule(new JavaTimeModule());
oMapper.findAndRegisterModules();

我还尝试了一些对象映射器的配置,例如

oMapper.configure(MapperFeature.USE_GETTERS_AS_SETTERS, false) ;

甚至在我的属性上使用了注释:

@JsonDeserialize(using = LocalDateDeserializer.class)
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate employeedateofbirth;

但是似乎没有什么对我有用。任何帮助,将不胜感激。 预先感谢。

1 个答案:

答案 0 :(得分:1)

如错误消息所指示,存在类型不匹配。在目标类别中更改此内容:

import com.datastax.driver.core.LocalDate;

进入:

import java.time.LocalDate;