我这里有多个对象,如下所示
[
{"id": 1, "content": {"a": 1, "b": 2}},
{"id": 2, "content": {"a": 10, "b": 20}},
{"id": 1, "content": {"c": 3, "d": 4}}
]
我想按content
(组)合并id
。最后得到结果
[
{"id": 1, "content": {"a": 1, "b": 2, "c": 3, "d": 4}},
{"id": 2, "content": {"a": 10, "b": 20}}
]
答案 0 :(得分:0)
您可以使用LINQ来查询分组依据。 https://www.newtonsoft.com/json/help/html/QueryingLINQtoJSON.htm
答案 1 :(得分:0)
这不是我认为的最优雅的方式,但是可以完成我认为的工作。我希望这是可以理解的。
string json = String.Empty;
using (var sr = new StreamReader(@"d:\Documents\asd.json"))
{
json = sr.ReadToEnd();
}
JArray array = JArray.Parse(json);
for (int i = 0; i < array.Count - 1; i++)
{
for (int j = i + 1; j < array.Count; j++)
{
if (array[i]["id"].ToString() == array[j]["id"].ToString())
{
foreach (var item in ((JObject)array[j]["content"]).Properties())
{
try
{
((JObject)array[i]["content"][item.Name]).Replace(item);
}
catch (Exception)
{
((JObject)(array[i]["content"])).Add(item);
}
}
array.Remove(array[j]);
}
}
}
Console.WriteLine(array.ToString());
我认为您可以编写它的通用合并,而不会轻易烧毁价值。