C# 合并具有相同属性c值的json对象#
如何在具有相同键和值的相同响应中组合JSON对象。比如,如果我有两个具有相同语言的对象:Python,我想将它们组合起来,并列出该语言下的剩余数据,Python,我不想重复C# 合并具有相同属性c值的json对象#,c#,arrays,json,linq,.net-core,C#,Arrays,Json,Linq,.net Core,如何在具有相同键和值的相同响应中组合JSON对象。比如,如果我有两个具有相同语言的对象:Python,我想将它们组合起来,并列出该语言下的剩余数据,Python,我不想重复 [ [ { "language": "Python", "id": 319029846, "full_Name": "beurtschipper/Depix", &q
[
[
{
"language": "Python",
"id": 319029846,
"full_Name": "beurtschipper/Depix",
"name": "Depix"
},
{
"language": "Python",
"id": 319169382,
"full_Name": "benwilber/boltstream",
"name": "boltstream"
},
{
"language": "Python",
"id": 316899719,
"full_Name": "r0ysue/r0capture",
"name": "r0capture"
}
],
[
{
"language": "YARA",
"id": 318029147,
"full_Name": "fireeye/red_team_tool_countermeasures",
"name": "red_team_tool_countermeasures"
}
],
[
{
"language": "TypeScript",
"id": 313443335,
"full_Name": "pmndrs/valtio",
"name": "valtio"
}
]
]
我要的表格是
[
[
{
"language": "Python",
"id": [319029846, 319169382, 316899719],
"full_Name": ["beurtschipper/Depix", "benwilber/boltstream", "r0ysue/r0capture"],
"name": ["Depix", "boltstream", "r0capture"]
}
],
[
{
"language": "YARA",
"id": 318029147,
"full_Name": "fireeye/red_team_tool_countermeasures",
"name": "red_team_tool_countermeasures"
}
],
[
{
"language": "TypeScript",
"id": 313443335,
"full_Name": "pmndrs/valtio",
"name": "valtio"
}
]
]
这就是我正在使用的代码
public class Items
{
[JsonPropertyName("language")]
public string Language { get; set; }
[JsonPropertyName("id")]
public int Id { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("full_name")]
public string Full_Name { get; set; }
public string total_count { get; set; }
}
public class Root
{
[JsonPropertyName("items")]
public List<Items> Items { get; set; }
}
Root jObj2 = JsonConvert.DeserializeObject<Root>(readerResult);
var result = jObj2.Items.Select(x => new
{
x.Language,
x.Id,
x.Full_Name,
x.Name
}).GroupBy(x => x.Language).ToArray();
return new JsonResult(result);
公共类项目
{
[JsonPropertyName(“语言”)]
公共字符串语言{get;set;}
[JsonPropertyName(“id”)]
公共int Id{get;set;}
[JsonPropertyName(“名称”)]
公共字符串名称{get;set;}
[JsonPropertyName(“全名”)]
公共字符串全名{get;set;}
公共字符串总计数{get;set;}
}
公共类根
{
[JsonPropertyName(“项目”)]
公共列表项{get;set;}
}
根作业J2=JsonConvert.DeserializeObject(readerResult);
var result=jObj2.Items.Select(x=>new
{
x、 语言,
x、 身份证,
x、 全名,
x、 名字
}).GroupBy(x=>x.Language).ToArray();
返回新的JsonResult(result);
GroupBy
是一个很好的起点。拥有组后,需要在新列表中选择每个组的各个属性:
var result = jObj2.Items
.GroupBy(x => x.Language)
.Select(group => new
{
Language = group.Key,
Ids = group.Select(x => x.Id).ToList(),
FullNames = group.Select(x => x.Full_Name).ToList(),
Names = group.Select(x => x.Name).ToList()
})
.ToArray();
哦,先生,除非我尝试将这些Id、名称……等放入列表
ids=group.Select(x=>x.Id).ToList(),
,否则我感到很惭愧,因为这很简单,但我遇到了一个问题,那就是它们不是一个列表,我甚至不知道我应该在Select之前输入GroupBy,现在我知道GroupBy实际上是如何工作的。如果你不介意的话,我想问另一个问题。。要知道的是经验还是我学得不好?当然,非常感谢您的帮助。您使用Linq的频率越高,您就越容易找到此类任务