在 C# 中反序列化复杂的 JSON 数据
本文关键字:JSON 数据 复杂 反序列化 | 更新日期: 2023-09-27 18:33:41
我只是C#编程的业余爱好者。现在我有一个看起来像下面的 JSON 数据
{
type: "xxx",
width: "xxx",
dataSource: {
"chart": {
"caption": "xxx"
},
"data": [
{},
{}
]
}
}
我将整个数据作为转义字符串。 现在在取消逃脱之后,当我使用 JavaScriptSerializer
时如下所示var data = ser.Deserialize<Dictionary<String, Object>>(chartData);
我能够将"类型","宽度"作为
data["width"]
data["type"]
现在我必须获取"标题"的值。任何如何获得的建议,我相信字典结构需要更改,但我缺乏 C# 知识
如果你知道对象的方案,你想创建一个表示 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,这是一个流行的库。