如何访问Jackson自定义序列化程序中的另一个对象?

时间:2014-03-12 15:44:41

标签: java serialization jackson

我想使用自定义Jackson序列化程序来编写属性值,该值是在模型中的另一个值上确定的。问题是值在不同的对象中。这是我的模型的简化版本。

public class MyModel {
    private ObjectA objectA;
    private Object objectB
....
}

public class ObjectA {
    private String myValue; //this is the property that will determine the value in ObjectB
    ......
}

public class ObjectB {
    @JsonSerialize(using=MyCustomSerializer.class)
    private String myOtherValue;// this this the value that will be use my custom serializer
    .....
}

//this is my CustomSerialier

public class MyCustomSerializer extends JsonSerializer<Object> {

    @Override
    public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) 
        throws IOException, JsonProcessingException {
         String myOtherValue = (String) value;
         //to process 'myOtherValue' I need access to 'myValue' in ObjectA
    ........
}

}

我宁愿不在MyModel上放置自定义序列化程序,因为模型非常大,有很多嵌套对象,所以在客户序列化程序中写出来会更多我想做的事情。是否有方法可以使用自定义序列化程序访问模型中的其他对象,而无需将其设置为顶级对象?

0 个答案:

没有答案