2016-12-16 1 views
1

Lassen Sie sich folgendes Objekt betrachten:Java startet Json mit gegebenen Startobjekt zu lesen

public class MyObject{ 
    int a, b; 

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

    // getters and setters 

} 

Ich habe die folgende Zeichenfolge

{"a":4} 

wenn ich Jackson 2 ein neues Objekt I a = 4 zum Erstellen und b = 1 (Ich nehme an, es ist das Objekt, das mit dem leeren Konstruktor erstellt wurde, wo Setter verwendet werden, um die Felder zu ändern, die Jackson 2 in der Zeichenfolge liest).

Jetzt habe ich eine Instanz von myObject mit a = 1 und b = 2 (anders als die, die ich mit dem leeren Konstruktor haben kann). Wie kann ich den String verwenden, um das Objekt auf a = 4 und b = 2 "abzuschließen"? Mit anderen Worten: Wie kann ich eine unvollständige JSON-Zeichenfolge verwenden, um Feldwerte in einem bereits vorhandenen Objekt zu ersetzen, das sich von dem mit dem leeren Konstruktor erstellten unterscheidet?

EDIT: eine mögliche Lösung aus der Antwort.

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; 
    } 
} 

Antwort