我只是C#编程的业余爱好者。现在我有一个类似于
的JSON数据{
type: "xxx",
width: "xxx",
dataSource: {
"chart": {
"caption": "xxx"
},
"data": [
{},
{}
]
}
}
我将整个数据作为转义字符串。现在在Unescape之后我使用JavaScriptSerializer如下
var data = ser.Deserialize<Dictionary<String, Object>>(chartData);
我能够获得&#34;类型&#34;,&#34;宽度&#34;如
data["width"]
data["type"]
现在我必须得到&#34;标题&#34;的价值。任何建议如何实现,我相信字典结构需要改变,但我因为我在C#中缺乏知识而堆积
答案 0 :(得分:2)
如果您知道对象的方案,那么您需要创建一个代表in的类,然后将json反序列化为它:
YourKnownClass obj = JsonConvert.DeserializeObject<YourKnownClass>(json);
Console.WriteLine(obj.dataSource.chart.caption.Value);
另一种选择是使用动态类型(如果您知道模式并且可以创建匹配的C#类,则没有充分理由使用动态对象。这也会对性能产生影响):
dynamic obj = JsonConvert.DeserializeObject<dynamic>(json);
Console.WriteLine(obj.dataSource.chart.caption.Value);
顺便说一句,在这个例子中,我使用的是一个流行的图书馆json.net。