我正在尝试实现一个自定义的Jackson Deserialiser,它应该通过在其上设置属性来使当前对象发生变化,然后继续。但是,当我尝试执行此操作时,我遇到了StackoverflowError。
我的代码如下:
val mapper = jacksonObjectMapper()
val module = SimpleModule()
module.addDeserializer(Property::class.java, RefPropertyDeserializer(resolutionScope))
mapper.registerModule(module)
class RefPropertyDeserializer(val resolutionScope: String) : JsonDeserializer<Property>() {
override fun deserialize(jp: JsonParser, ctxt: DeserializationContext?): Property {
val property = jp.readValueAs(Property::class.java) // <-- stackoverflow
property.setProcessed(true)
return property
}
}
我想做的是获得对当前解析的对象Property
的访问权限,将其设置为已处理,然后返回该对象。
我可以做的是实例化Property
,设置标志并返回它,但实际上,我的Property类具有许多属性和嵌套结构,因此这样做有点乏味。欢迎任何建议。