在 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# 知识

在 C# 中反序列化复杂的 JSON 数据

如果你知道对象的方案,你想创建一个表示 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,这是一个流行的库。