Jackson Custom Deserialiser突变当前节点

时间:2019-09-13 08:33:03

标签: java kotlin jackson

我正在尝试实现一个自定义的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类具有许多属性和嵌套结构,因此这样做有点乏味。欢迎任何建议。

0 个答案:

没有答案