Ho diverse classi che contengono ricorsive l'una a seconda dell'altra e le serializzo in formato JSON con Gson GraphAdapterBuilder e il suo lavoro perfetto. Ora voglio deserializzare nella stessa struttura, ma non riesco a scoprire come.Deserializzare l'oggetto complesso con dipendenze ricorsive.
Faccio alcuni esempi:
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);
uscita mi sta dando quello che voglio:
{"0x1":{"vector":["0x2","0x3","0x4"]},"0x2":{"field":1,"parent":"0x1"},"0x3":{"field":2,"parent":"0x1"},"0x4":{"field":3,"parent":"0x1"}}
C'è un modo per deserializzare quella stringa JSON indietro nel oggetto di ClassB?
Questo non è quello che mi serviva affatto. Perché hai sostituito le classi originali in classi con campi di tipo String? Il problema era solo usare le classi con dipendenze ricorsive. La soluzione che hai scritto non è giusta per me. – lub0v
riscrivere le classi originali non è la soluzione ottimale – virsha