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