让我们考虑以下对象:
public class MyObject{
int a, b;
public MyObject(){
setA(1);
setB(1);
}
// getters and setters
}
我有以下字符串
{"a":4}
当我使用Jackson 2创建一个新对象时,我有a = 4
和b = 1
(我假设,它是使用空构造函数创建的对象,其中setter用于修改Jackson 2读取的字段在字符串中。)
现在,我有一个带有a = 1
和b = 2
的myObject实例(与我的空构造函数不同)。
如何使用String将对象“完成”到a = 4
和b = 2
?
换句话说:如何使用不完整的json字符串替换现有对象中的字段值,而不是使用空构造函数创建的对象?
编辑:回答可能的解决方案。
public static Object updateObject(String fileName, Object oldValue){
try {
return new ObjectMapper().readerForUpdating(oldValue).readValue(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
return oldValue;
}
}
答案 0 :(得分:1)
可以反序列化为已存在的对象。 这样,你的构造函数只会被调用一次。
请参阅ObjectMapper.readerForUpdating上的文档。 这个question也可以提供帮助。