Java start reading Json with given starting object

91 views Asked by At

Let's consider the following object:

public class MyObject{
    int a, b;

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

    // getters and setters

}

I have the following string

{"a":4}

when I use Jackson 2 to create a new object I have a = 4 and b = 1 (I assume, it's the object created with the empty constructor where setters are used to modify the fields that Jackson 2 reads in the string).

Now, I have an instance of myObject with a = 1 and b = 2 (different from the one I can have with the empty constructor). How can I use the String to "complete" the object to a = 4 and b = 2? In other words: how can I use an incomplete json string to replace field values in an already existing object different from the one created with the empty constructor?

EDIT: a possible solution from answer.

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

There are 1 answers

0
arghtype On BEST ANSWER

It's possible to deserialize into already existing object. In that way your constructor will be called only once.

See documentation on ObjectMapper.readerForUpdating . This question may also help.