我不确定这是否可行,但我想在 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"原样。
2 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
最好的方法,我认为是添加一个自定义反序列化类
@JsonDeserialize(using = ThingDeserializer.class)
public class Thing {
...
}
此处反序列化示例 https://www.baeldung.com/jackson-deserialization
然后,您的 bean 将永远干净,您可以根据需要制作自己的 JSON
狐的传说
TA贡献1804条经验 获得超3个赞
因为在 Jackson 中实际上不能像这样重载 setter,所以我的解决方案如下:
我做了一个解串器转换MyObject2到MyObject1并且生了一个二传手,所以我的课是这样的:
public class Thing {
@JsonDeserialize(using = MyObjectDeserializer.class)
private MyObject1 object;
public MyObject1 getObject() {
return object;
public void setObject(MyObject1 object) {
this.object = object;
}
}
添加回答
举报
0/150
提交
取消
