Jackson如何在自定义Serializer / Deserializer中检索父bean

时间:2015-06-03 13:29:20

标签: java json serialization jackson

在自定义序列化器/反序列化器中,有没有办法检索字段的父bean?

例如:

ColorStateList

在这里,我想在我的序列化程序中获取Foo而不在Bar中有参考。

3 个答案:

答案 0 :(得分:7)

如果您使用的是Jackson 2.5,则可以通过JsonGenerator.getCurrentValue()访问父对象。或者,在层次结构的更上方,通过getOutputContext()(具有getParent()getCurrentValue()方法)。 对于自定义反序列化程序,也可通过JsonParser使用。

答案 1 :(得分:4)

对于反序列化,您无法访问JsonGenerator对象。以下对我有用:

JsonStreamContext parsingContext = jsonParser.getParsingContext();
JsonStreamContext parent = parsingContext.getParent();
Object currentValue = parent.getCurrentValue();

答案 2 :(得分:0)

注意:如果使用自定义序列化

,则getCurrentValue将为null

我通过将父对象设置为子级的序列化程序实例,然后在杰克逊调用子级序列化程序时访问它来解决这个问题。