मेरे पास कक्षाओं की एक जोड़ी है जो कुछ इस तरह दिखती है:

public class Parent
{
    public int id { get; set; }
    public string name { get; set; }
    public List<Child> children { get; set; }
}
public class Child
{
    public int id { get; set; }
    public string name { get; set; }
}

मूल वर्ग को पॉप्युलेट करने के लिए, मैं एक एपीआई कॉल करता हूं और लौटाए गए JSON को deserialize करता हूं जो इस तरह दिखता है:

JSON

{
 “parent”:{
   “id”:”123”,
   “name”:”parent name”,
   “child”:{
       “id”:”456″
   },
 }
}

सी#

var parent = new JavaScriptSerializer().Deserialize<List<Parent>>(jsonString);

फिर मैं एक अन्य एपीआई कॉल करने के लिए child के id का उपयोग करता हूं जो child के बारे में अधिक विवरण देता है जिसे मुझे parent को पॉप्युलेट करने के लिए उपयोग करने की आवश्यकता है:

{
 “child”:{
   “id”:”456”,
   “name”:”child name”
 }
}

मैं child JSON स्ट्रिंग के डेटा के साथ शेष Parent वर्ग को कैसे पॉप्युलेट कर सकता हूं?

0
Dryden Long 29 नवम्बर 2017, 23:59

2 जवाब

सबसे बढ़िया उत्तर

अगर मैं सही ढंग से समझ गया, तो आपको केवल Parent.children से प्रत्येक आंशिक बच्चे के लिए अनुरोध करना होगा और फिर पूरे संग्रह को पूर्ण बच्चों की जानकारी से बदलना होगा:

var parents = new JavaScriptSerializer().Deserialize<List<Parent>>(jsonString);
foreach (var parent in parents) {
    var fullChildren = new List<Child>();
    foreach (var partialChild in parent.children) {
        var fullChild = GetChildJsonById(partialChild.id);
        fullChildren.Add(fullChild);
    }
    // just replace whole stuff
    parent.children = fullChildren;
}
2
Evk 30 नवम्बर 2017, 00:20

मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे पूरा यकीन है कि आप कुछ ऐसा कर सकते हैं:

var child = new JavaScriptSerializer().Deserialize<Child>(jsonString);

इसके अलावा और कुछ नहीं होना चाहिए, यह मानते हुए कि आप अपने बच्चे की कक्षा को अपडेट करना चाहते हैं।

हालांकि यह अक्षम लगता है, मुझे नहीं पता कि पहली एपीआई कॉल से पूर्ण बाल वस्तु क्यों नहीं दी जाती है।

0
Brock Reed 30 नवम्बर 2017, 00:06