का उपयोग कर मेरे पास एक JSON-array है जिसमें विभिन्न गुणों के साथ विभिन्न प्रकार के ऑब्जेक्ट हैं। गुणों में से एक को "टाइप" कहा जाता है और सरणी आइटम के प्रकार को निर्धारित करता है।कोपरिएन्टिस में हेटरोजेनस JSON सरणी deserializing सूची <> JSON.NET
[{
type : "comment",
text : "xxxx"
}, {
type : "code",
tokens : [{
type : "ref",
data : "m"
}, {
type : "operator",
data : "e"
}
]
}, {
type : "for",
boundLocal : {
type : "local",
name : "i",
kind : "Number"
},
upperBound : {
type : "ref",
tokens : [{
type : "operator",
data : "3"
}, {
type : "operator",
data : "0"
}
]
},
body : [{
type : "code",
tokens : [{
type : "ref",
data : "x"
}
]
}, {
type : "code",
tokens : [{
type : "ref",
data : "y"
}
}
]
]
]
मेरी नेट कार्यान्वयन के लिए उन वस्तुओं मैं कक्षाओं का एक सेट को परिभाषित नक़्शा बनाने के लिए: एक आधार वर्ग और कई बच्चे कक्षाओं (एक जटिल पदानुक्रम के साथ, 4 "पीढ़ियों" होने) यहाँ अपने डेटा का एक उदाहरण है । यहां केवल इन कक्षाओं का एक छोटा सा उदाहरण है:
public abstract class TExpression
{
[JsonProperty("type")]
public string Type { get; set; }
}
public class TComment : TExpression
{
[JsonProperty("text")]
public string Text { get; set; }
}
public class TTokenSequence : TExpression
{
[JsonProperty("tokens")]
public List<TToken> Tokens { get; set; }
}
क्या मैं तक पहुँचना चाहते हैं एक covariant सामान्य सूची में इस सरणी deserialize करने में सक्षम होना है, की घोषणा की है:
List<TExpression> myexpressions = JsonConvert.DeserializeObject<List<TExpression>>(aststring);
इस सूची में शामिल करना चाहिए उचित बच्चे कक्षाएं, TExpression से इनहेरिट इसलिए मैं अपने कोड में बाद में निम्न कोड का उपयोग कर सकते के उदाहरण:
foreach(TExpression t in myexpressions)
{
if (t is TComment) dosomething;
if (t is TTokenSequence) dosomethingelse;
}
मैं इसे कैसे JSON.NET का उपयोग कर पहुँच सकते हैं?
की संभावित डुप्लिकेट https://stackoverflow.com/questions/35182949/deserialize-json-string-depending- ऑन-टाइप/44650012 – manuc66