计算Json数组中特定名称的出现次数

时间:2018-03-20 11:44:55

标签: c# .net json

我想计算API返回的Json数组中出现的次数 我的数据是

data = [
  {"id":"1939317721","pauseReason":"DISPLAY","DeptName":"Account"},
  {"id":"1939317722","pauseReason":"DISPLAY","DeptName":"Admission"},
  {"id":"1939317723","pauseReason":"DISPLAY","DeptName":"Account"},
  {"id":"1939317724","pauseReason":"DISPLAY","DeptName":"Account"},
]

因此我想要

res = {"account":3,"admission":1}

那么如何在键值对中得到DeptName的出现次数?

1 个答案:

答案 0 :(得分:4)

假设你有一个类:

class Foo {
   public string Id {get;set;}
   public string PauseReason {get;set;}
   public string DeptName {get;set;}
}

然后使用类似Json.NET的东西:

var foos = JsonConvert.DeserializeObject<Foo[]>(json);

然后是LINQ:

var grouped = foos.GroupBy(x => x.DeptName);
foreach(var grp in grouped)
{
     Console.WriteLine($"{grp.Key}: {grp.Count()}");
}

如果您尝试将其格式化为JSON,那么:

var map = grouped.ToDictionary(grp => grp.Key, grp => grp.Count());
var jsonResult = JsonConvert.SerializeObject(map);