c# - 如何通过linq从json获取子数据

标签 c# json linq

我正在使用 json.net 并且我有一个类似的 json 数据,

[
{
  "ID":1098,
  "Name":"JC",
  "Issues":[
     {
        "PriorityLevel":"Low",
        "State":"Open"
     },
     {
        "PriorityLevel":"Low",
        "State":"Open"
     }
  ]
}
]    

我只想通过 linq 从 Issue 中获取子数据。我可以联系 parent 但不能联系 child 。如果我直接访问子数据,我不需要放置多个 for 循环。

谢谢。

最佳答案

您可以只创建一个 Json 对象并将属性提取到 Anonymouse 类型中,然后您可以使用 Linq 进行查询。

string response = @"[{
  ""ID"":1098,
  ""Name"":""JC"",
  ""Issues"":[
     {
        ""PriorityLevel"":""Low"",
        ""State"":""Open""
     },
     {
        ""PriorityLevel"":""Low"",
        ""State"":""Open""
     }
  ]}]";

var jsonObject = JObject.Parse(response);
var issues = jsonObject["Issues"].Select(x => new
             {
                 PriorityLevel = (string)x.SelectToken("PriorityLevel"),
                 State = (string)x.SelectToken("State")
             });

您使用 SelectToken 获取问题的子项。现在您可以查询任何您想要的问题。

var lowPriorities = issues.Where(x => x.PriorityLevel == "Low");

这是“Deserializing Using LINQ Example”上 json.net 页面的直接链接。

关于c# - 如何通过linq从json获取子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616093/

相关文章:

c# - 我们可以在运行时为 C# 中的默认构造函数提供主体吗?

c# - 获取没有非标准端口的原始 url (C#)

javascript - JSON:所选选项在 IE 中不起作用,而在 Firefox 中有效

javascript - 如何访问名为日期的对象参数

c# - 这个正则表达式怎么写?

c# - 如何在 Application_BeginRequest 中执行击中网络服务器的第一个请求的部分代码?

c# - 返回 NULL 值的 JSON 反序列化器

c# - 字典 linq 选择上一个

c# - 如何将 List<String> 转换为 Dictionary<int,String>

c# - 使用 LINQ 获取第一个排序元素? (C#)