मेरे पास कई कक्षाएं हैं जिनमें एक-दूसरे के आधार पर रिकर्सिव होता है और मैं उन्हें जीएसओएन ग्राफएडप्टरबिल्डर के साथ जेएसओएन प्रारूप में क्रमबद्ध करता हूं, और इसका काम सही है। अब मैं उन्हें एक ही संरचना में deserialize करना चाहता हूं, लेकिन यह पता नहीं लगा सकता कि कैसे।जीसन रिकर्सिव निर्भरताओं के साथ जटिल वस्तु को deserialize
मैं कुछ उदाहरण हैं:
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);
आउटपुट मुझे दे रहा है जो मैं चाहता:
{"0x1":{"vector":["0x2","0x3","0x4"]},"0x2":{"field":1,"parent":"0x1"},"0x3":{"field":2,"parent":"0x1"},"0x4":{"field":3,"parent":"0x1"}}
वहाँ कि json स्ट्रिंग वापस deserialize करने के लिए ClassB की वस्तु में कोई तरीका है?
यह है कि मैं क्या बिल्कुल जरूरत नहीं है। आपने मूल कक्षाओं को स्ट्रिंग के प्रकार वाले वर्गों के साथ कक्षाओं में क्यों बदल दिया? समस्या सिर्फ रिकर्सिव निर्भरताओं वाले वर्गों का उपयोग करने के लिए थी। आपके द्वारा लिखे गए समाधान मेरे लिए सही नहीं हैं। – lub0v
मूल कक्षाओं को फिर से लिखना इष्टतम समाधान नहीं है – virsha