我试图反序列化我不拥有的类的对象。该类具有诸如var request = require('request')
, JSONStream = require('JSONStream')
, es = require('event-stream')
request({url: 'http://isaacs.couchone.com/registry/_all_docs'})
.pipe(JSONStream.parse('rows.*'))
.pipe(es.mapSync(function (data) {
console.error(data)
return data
}))
,id_
,address_
之类的属性名称,但其获取器是name_
getId()
getAddress()
()等。>
当我尝试使用杰克逊反序列化JSON时,我得到
getName
似乎发生这种情况是因为杰克逊正在寻找com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "id_", not marked as ignorable
而不是getId_()
。由于我不拥有基础类,因此无法使用Jackson的注释将属性映射到自定义json字段。
如何通过对象属性到其getter方法的自定义映射反序列化?
答案 0 :(得分:0)
您可以尝试自定义解串器。
签出:https://www.baeldung.com/jackson-deserialization
这样,您可以为该类注册一个反序列化器。
但是,当类更改时,您仍然必须对其进行编辑。
您可以尝试的另一件事:
mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
这将使映射器具有对私人成员的完全访问权限。
答案 1 :(得分:0)
您可以为Jackson申请 MixIn -这就是我解决了为自动生成的AVRO类(Avro generated class issue with json conversion [kotlin])尝试序列化和反序列化JSON的问题
这里是一个例子: