反序列化Json并将其中的一部分存储到对象列表中

时间:2018-01-11 08:48:18

标签: c# json json.net deserialization

如何反序列化此Json并保存SampleClass列表中的所有数据字段 HeaderText

 public class SampleClass
{
    public string Datafield { get; set; }
    public string HeaderText { get; set; }
}

{
    "SummaryResults": {
      "ControlType": "Table",
      "ColumnDefinitions": [
        {
          "Datafield": "SourceSystem",
          "HeaderText": "Source System"
        },
        {
          "Datafield": "ChildHoldType",
          "HeaderText": "Child Hold Type"
        },
        {
          "Datafield": "CompanyNumber",
          "HeaderText": "Company Number"
        },
        {
          "Datafield": "Queue",
          "HeaderText": "Queue"
        },
        {
          "Datafield": "Country",
          "HeaderText": "Country"
        },
        {
          "HeaderText": "Count",
          "ControlDefinition": {
            "ControlType": "Hyperlink",
            "DisplayText": "@{Count}",
            "URL" :  ""
          }
        }
      ]
    }
}

1 个答案:

答案 0 :(得分:0)

使用Json.Net的LINQ-to-JSON API很简单:

List<SampleClass> list = JToken.Parse(json)
    .SelectToken("SummaryResults.ColumnDefinitions")
    .Children<JObject>()
    .Select(jo => jo.ToObject<SampleClass>())
    .ToList();

但是,请注意,JSON数组中的最后一项没有Datafield,因此在结果列表中它将为null。

小提琴:https://dotnetfiddle.net/9dl2wP