Java 使用给定的起始对象开始阅读 Json
Java start reading Json with given starting object
让我们考虑以下对象:
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 实例(不同于我可以使用空构造函数的实例)。
如何使用字符串 "complete" 将对象 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;
}
}
可以反序列化为已经存在的对象。
这样你的构造函数将只被调用一次。
请参阅 ObjectMapper.readerForUpdating 上的文档。
这 question 也可能有所帮助。
让我们考虑以下对象:
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 实例(不同于我可以使用空构造函数的实例)。
如何使用字符串 "complete" 将对象 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;
}
}
可以反序列化为已经存在的对象。 这样你的构造函数将只被调用一次。
请参阅 ObjectMapper.readerForUpdating 上的文档。 这 question 也可能有所帮助。