Ich habe mehrere Klassen, die rekursiv voneinander abhängig und ich serialisieren sie in JSON-Format mit Gson GraphAdapterBuilder, und seine Arbeit perfekt. Jetzt möchte ich sie in dieselbe Struktur deserialisieren, kann aber nicht herausfinden, wie.Gson Deserialize komplexes Objekt mit rekursiven Abhängigkeiten
ich einige Beispiel machen:
class ClassA{
public int field;
public ClassB parent;
public ClassA(int f, ClassB p){
field = f;
parent = p;
}
}
class ClassB{
public Vector<ClassA> vector = new Vector<ClassA>();
}
...
ClassB b = new ClassB();
ClassA a1 = new ClassA(1,b);
ClassA a2 = new ClassA(2,b);
ClassA a3 = new ClassA(3,b);
b.vector.add(a1);
b.vector.add(a2);
b.vector.add(a3);
//Serializing object b
GsonBuilder gsonBuilder = new GsonBuilder();
new GraphAdapterBuilder()
.addType(ClassA.class)
.addType(ClassB.class)
.registerOn(gsonBuilder);
Gson gson = gsonBuilder.create();
String json = gson.toJson(b);
Output mir gibt, was ich will:
{"0x1":{"vector":["0x2","0x3","0x4"]},"0x2":{"field":1,"parent":"0x1"},"0x3":{"field":2,"parent":"0x1"},"0x4":{"field":3,"parent":"0x1"}}
Gibt es eine Möglichkeit, dass die JSON-String zurück in Objekt der Klasse B deserialisieren?
Das ist nicht das, was ich überhaupt benötigt. Warum haben Sie die ursprünglichen Klassen in Klassen mit Feldern vom Typ String ersetzt? Das Problem bestand lediglich darin, die Klassen mit rekursiven Abhängigkeiten zu verwenden. Die Lösung, die du geschrieben hast, ist nicht richtig für mich. – lub0v
das Umschreiben der ursprünglichen Klassen ist nicht die optimale Lösung – virsha