java - Jackson 对象上的重载设置器
问题描述
我不确定这是否可能,但我想在杰克逊可反序列化对象上有一个重载的设置器。因此,根据该字段中的对象,它会以不同的方式反序列化。
例子
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"
原样。
解决方案
我认为最好的方法是添加一个自定义反序列化类
@JsonDeserialize(using = ThingDeserializer.class)
public class Thing {
...
}
此处的反序列化示例 https://www.baeldung.com/jackson-deserialization
然后,您的 bean 将永远干净,并且您可以根据需要制作自己的 JSON
推荐阅读
- xslt - 基于相同的子值 (ID) 合并两个不同的父节点内容 - XSL 转换
- c# - CEF Sharp - C# WPF 发布的项目将无法运行 - 引发错误 - 错误模块名称:KERNELBASE.dll,版本:10.0.18362.1316,
- python - discord.py 中的播放函数抛出错误
- mysql - 在基数中,笔画表示的最大关系数是多少?(MySQL)
- javascript - 使用 CSS 网格构建反应基础布局的最佳方法
- python - 使用迭代方法从 Python 中的起始节点到达图中的目标节点
- sql - 在 Postgres 中结合日期和 UTC 时间字段
- javascript - Onclick复选框如何更改按钮颜色?
- uml - 如何在不结束活动过程的情况下使用 UML 在活动图中对错误消息进行建模
- c# - 等于覆盖和 LINQ GroupBy