利用C#将数据 [ {"name":"A","fzh":1}, {"name":"A","fzh":2}, {"name":"A","fzh":3}, {"name":"B","fzh":4}, {"name":"B","fzh":5}, {"name":"C","fzh":6}, {"name":"D","fzh":7}, {"name":"D","fzh":8}, ] 转换为: [ {"name":"A","fzhs":[1,2,3]} ,{"name":"B","fzhs":[4,5]} ,{"name":"C","fzhs":[6]} ,{"name":"D","fzhs":[7,8]} ]
使用LINQ,可以将原始JSON数据转换为目标结构。下面是实现该转换的C#代码:
using System;
using System.Collections.Generic;
using System.Linq;
public class DataModel
{
public string Name { get; set; }
public int[] Fzhs { get; set; }
}
class Program
{
static void Main(string[] args)
{
var jsonData = new[]
{
new { name = "A", fzh = 1 },
new { name = "A", fzh = 2 },
new { name = "A", fzh = 3 },
new { name = "B", fzh = 4 },
new { name = "B", fzh = 5 },
new { name = "C", fzh = 6 },
new { name = "D", fzh = 7 },
new { name = "D", fzh = 8 }
};
var result = jsonData
.GroupBy(x => x.name)
.Select(g =>
new DataModel
{
Name = g.Key,
Fzhs = g.Select(x => x.fzh).ToArray()
});
foreach (var item in result)
{
Console.WriteLine($"{{\"name\":\"{item.Name}\", \"fzhs\":[{string.Join(",", item.Fzhs)}]}}");
}
}
}
在这个代码中,我们首先定义了一个DataModel
类来表示目标JSON结构。然后,我们使用LINQ的GroupBy
方法将原始JSON数据分组,根据每个分组的名称进行分组。接着,我们使用Select
方法对每个分组应用一系列操作:
- 将名称转换为字符串。
- 使用另一系列
Select
操作,将fzh值转换为数组。
最终结果是原始JSON数据转换为目标结构的集合。