/ / कई मॉडल json के लिए - json, windows-runtime, json.net, windows-8.1

जेसन - जेसन, विंडोज-रनटाइम, जेसननेट, विंडोज -8 के लिए कई मॉडल

क्या विंडोज 8.1 स्टोर ऐप के लिए कई मॉडलों से एक json सरणी स्ट्रिंग बनाने का एक तरीका है। उदाहरण के लिए:

public class Foo
{
public string property1 {get;set;}
public string property2 {get;set;}
}

public class Foo2
{
public string value1 {get;set;}
public string value2 {get;set;}
}

मेरे पास कई मॉडल हैं। मैं मॉडल को json string में बदलने के लिए json.net का उपयोग कर रहा हूँ। मैं मॉडल के सरणियों को भी परिवर्तित कर सकता हूँ। मेरा सवाल यह है कि मैं इन मॉडलों का उपयोग करके एक ऐरे जोंस स्ट्रिंग कैसे बना सकता हूं:

[
{
"property1":"string",
"property2":"string"
},
{
"value1":"string",
"value2":"string"
},
{
"property1":"string",
"property2":"string"
}
]

मैं वास्तव में फंस गया हूं और आपकी मदद की जरूरत है।

उत्तर:

उत्तर № 1 के लिए 1

ऐसा करने का एक तरीका अमूर्त वर्ग बनाना है BaseFoo वो दोनों Foo तथा Foo2 कक्षाएं इनहेरिट करेंगी:

public abstract class BaseFoo
{

}

public class Foo : BaseFoo
{
public string property1 { get; set; }
public string property2 { get; set; }
}

public class Foo2 : BaseFoo
{
public string value1 { get; set; }
public string value2 { get; set; }
}

कहते हैं कि आप सूची को इस तरह से शुरू करते हैं:

 var list = new List<BaseFoo>
{
new Foo
{
property1 = "prop11",
property2 = "prop12"
},
new Foo2
{
value1 = "val1",
value2 = "val2"
},
new Foo
{
property1 = "prop21",
property2 = "prop22"
}
};

क्रमांकन इस तरह दिखना चाहिए:

var settings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects
};

var json = JsonConvert.SerializeObject(list, Formatting.Indented, settings);

और उत्पादन किया json इस तरह दिखेगा:

[
{
"$type": "ConsoleApplication23.Foo, ConsoleApplication23",
"property1": "prop11",
"property2": "prop12"
},
{
"$type": "ConsoleApplication23.Foo2, ConsoleApplication23",
"value1": "val1",
"value2": "val2"
},
{
"$type": "ConsoleApplication23.Foo, ConsoleApplication23",
"property1": "prop21",
"property2": "prop22"
}
]

The TypeNameHandling.Objects विकल्प सफल deserialization के लिए जोड़ा जाता है:

var deserializedList = JsonConvert.DeserializeObject<List<BaseFoo>>(json, settings);

आप इसे बाहर निकाल सकते है और सटीक json स्ट्रिंग आप की जरूरत है, यदि आप इसे वापस अनुक्रमित करने की जरूरत नहीं है ।हालांकि छोड़ने यह shouldn ' t किसी भी कार्यशीलता को तोड़ने पर json स्ट्रिंग के आकार में वृद्धि होगी शामिल हैं ।