Jackson对象上的java重载setter
我不确定这是否可行,但我希望在Jackson反序列化对象上有一个重载的setter。因此,根据该字段中的对象,它的反序列化方式有所不同
示例
public class Thing {
private MyObject1 object;
public MyObject1 getObject() {
return object;
public void setObject(MyObject1 object) {
this.object = object;
}
public void setObject(MyObject2 object) {
this.object = translate1To2(object);
}
}
如果这是不可能的,有人会给我一个替代方法吗?我担心的是,在只有一个setter的简单情况下,Jackson不必选择将JSON反序列化为哪个对象,因此不确定它是否可以
更新:上面给出了一个com.fasterxml.jackson.databind.JsonMappingException: Conflicting setter definitions for property "object"
原样
# 1 楼答案
我认为最好的方法是添加一个定制的反序列化类
这里的反序列化示例 https://www.baeldung.com/jackson-deserialization
然后,你的bean将永远干净,你可以随心所欲地创建自己的JSON
# 2 楼答案
因为在Jackson中,你不能像这样重载二传手,所以我的解决方案如下:
我制作了一个反序列化程序来将
MyObject2
翻译成MyObject1
,并且有一个setter,所以我的类看起来像这样: