不久前,我制作了一个函数,将JSON合并在一起。
我有一张看起来像这样的桌子,在这个例子中,它是通过把桌子上的"朋友"留在桌子上"人"来制作的:
Id | |||||
---|---|---|---|---|---|
1 | 1 | 2 |
我会创建一个模型来比使用DataTable
更容易地携带数据
public class RequestModel{
public int Id { get; set; }
public string Name { get; set; }
public string FriendName { get; set; }
public int FriendAge { get; set; }
}
然后您可以尝试使用lambda来制作它,使用GroupBy
方法通过Id
、Name
进行分组。
string json = "[{"Id":1,"Name":"Danny","FriendName":"Jason","FriendAge":19},{"Id":1,"Name":"Danny","FriendName":"Cesie","FriendAge":18},{"Id":2,"Name":"Jason","FriendName":"Danny","FriendAge":19}]";
var req = JsonConvert.DeserializeObject<IEnumerable<RequestModel>>(json);
var res= req.GroupBy(x=> new {x.Id,x.Name})
.Select(x=> new Result{
Name =x.Key.Name,
Id = x.Key.Id,
Friends = x.Select(z=> new Friend(){
Name = z.FriendName,
Age = z.FriendAge
}).ToArray()
});
var jsonResult = JsonConvert.SerializeObject(res);