c# - 如何在 C# 中使用 Newtonsoft.json 解析具有不同名称的 JSON 子节点列表

标签 c# .net json.net

我希望将 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# 示例代码来实现所需的输出,我将不胜感激。

最佳答案

还有另一种选择:

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

关于c# - 如何在 C# 中使用 Newtonsoft.json 解析具有不同名称的 JSON 子节点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54661424/

相关文章:

Json.NET 和 GC 等待的 C# 服务性能问题

c# - 为什么不能将 `stackalloc` 表达式分配给 `Span<T>` 参数?

c# - 从类中调用方法

c# - 调用 C 代码时避免 AccessViolationException

c# - IRequiresSessionState 不起作用

javascript - 如何使用jquery设置单选按钮的选中值

.net - 如何在 Winforms 中使用 Presentation Model?

c# - 在 json 中反序列化嵌套列表的最佳方法 - C#

c# - 具有 [Authorize] 的环境相关 Controller

c# - Json.NET Serialization Callbacks 中的 StreamingContext 参数有什么用?