首页 > 解决方案 > 如何在 C# 中使用 Newtonsoft.json 解析具有不同名称的 JSON 子节点列表

问题描述

我希望将 JSON 解析为 C# 列表。问题是我试图解析的数据不是数组格式。以下是示例 JSON

   {
   "results":{
      "records":{
         "record:8545314564":{
            "name":"record 1",
            "description":"description for record 1"
         },
         "record:2254698789":{
            "name":"record 2",
            "description":"description for record 2"
         },
         "record:7454687851":{
            "name":"record 3",
            "description":"description for record 3"
         }
      }
   }
}

我的模型类看起来像这样

public class Record
{
    public string Name { get; set; }

    public string Description { get; set; }
}

我正在寻找的是创建一个

List<Record> Records

我不关心记录子节点的名称(即记录:8545314564,记录:2254698789 等)。我只关心每个记录节点内的名称和描述属性。

如果有人可以提供 C# 中的示例代码来实现所需的输出,我将不胜感激。

标签: c#.netjson.net

解决方案


还有另一种选择:

using Newtonsoft.Json.Linq;
...
var jObject = JObject.Parse(yourJsonString);
var records = jObject["results"]["records"]
    .Children()
    .Children()
    .Select(i => i.ToObject<Record>())
    .ToList();

您可以在此处找到相关的 Json.NET 文档: https ://www.newtonsoft.com/json/help/html/SerializingJSONFragments.htm


推荐阅读