Java开始用给定的起始对象读取Json

时间:2016-12-16 11:41:00

标签: java json jackson2

让我们考虑以下对象:

public class MyObject{
    int a, b;

    public MyObject(){
        setA(1);
        setB(1);
    }

    // getters and setters

}

我有以下字符串

{"a":4}

当我使用Jackson 2创建一个新对象时,我有a = 4b = 1(我假设,它是使用空构造函数创建的对象,其中setter用于修改Jackson 2读取的字段在字符串中。)

现在,我有一个带有a = 1b = 2的myObject实例(与我的空构造函数不同)。 如何使用String将对象“完成”到a = 4b = 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;
    }
}

1 个答案:

答案 0 :(得分:1)

可以反序列化为已存在的对象。 这样,你的构造函数只会被调用一次。

请参阅ObjectMapper.readerForUpdating上的文档。 这个question也可以提供帮助。