मेरे पास कक्षाओं की एक जोड़ी है जो कुछ इस तरह दिखती है:
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
वर्ग को कैसे पॉप्युलेट कर सकता हूं?
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;
}
मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे पूरा यकीन है कि आप कुछ ऐसा कर सकते हैं:
var child = new JavaScriptSerializer().Deserialize<Child>(jsonString);
इसके अलावा और कुछ नहीं होना चाहिए, यह मानते हुए कि आप अपने बच्चे की कक्षा को अपडेट करना चाहते हैं।
हालांकि यह अक्षम लगता है, मुझे नहीं पता कि पहली एपीआई कॉल से पूर्ण बाल वस्तु क्यों नहीं दी जाती है।
संबंधित सवाल
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।