0

我正在尝试反序列化我不拥有的类的对象。该类具有属性名称,例如id_, address_, name_,但它的 getter 是getId() getAddress() getName() 等。

当我尝试使用杰克逊反序列化 JSON 时,我得到

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "id_", not marked as ignorable

看起来这是因为杰克逊在寻找getId_()而不是getId(). 由于我不拥有底层类,因此我无法使用 Jackson 的注释将属性映射到自定义 json 字段。

如何使用对象属性到其 getter 方法的自定义映射反序列化?

4

2 回答 2

0

您可以尝试自定义反序列化器。

退房:https ://www.baeldung.com/jackson-deserialization

这样您就可以为该类注册一个反序列化器。

但是,当类更改时,您仍然需要对其进行编辑。

您可以尝试的另一件事:

mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);

这将使映射器完全访问私有成员。

于 2019-06-25T12:52:56.403 回答
0

您可以为 Jackson 应用MixIn - 这就是我尝试为自动生成的 AVRO 类序列化和反序列化 JSON 的问题(Avro 生成的类问题与 json 转换 [kotlin]

这是一个例子:

https://medium.com/@shankar.ganesh.1234/jackson-mixin-a-simple-guide-to-a-powerful-feature-d984341dc9e2

于 2019-06-25T12:55:47.043 回答