C#合并2个Json字符串
我尝试合并2个json字符串,但不幸的是,它没有按预期工作,因为我希望根据id合并这2个json数据,如下所示:C#合并2个Json字符串,c#,C#,我尝试合并2个json字符串,但不幸的是,它没有按预期工作,因为我希望根据id合并这2个json数据,如下所示: Json_1 : result [ result[0] { id : 11111 attribute1 : "<anything>" attribute2 : "<anything>"
Json_1 :
result [
result[0]
{ id : 11111
attribute1 : "<anything>"
attribute2 : "<anything>"
...
}
result[1]
{ id : 22222
attribute1 : "<anything>"
attribute2 : "<anything>"
...
}
...
]
Json_2 :
result [
result[0]
{ id : 11111
attribute99 : "<anything>"
attribute98 : "<anything>"
...
}
result[1]
{ id : 22222
attribute99 : "<anything>"
attribute98 : "<anything>"
...
}
...
]
Expect Merged Json should look like this :
Result[
result[0]
{ id : 11111
attribute1 : "<anything>"
attribute2 : "<anything>"
attribute99 : "<anything>"
attribute98 : "<anything>"
...
}
result[1]
{ id : 22222
attribute1 : "<anything>"
attribute2 : "<anything>"
attribute99 : "<anything>"
attribute98 : "<anything>"
...
}
...
]
您可能希望这样声明JSON类:
类结果
{
公开名单结果
}
然后可以使用Newtonsoft.Json获取这两个对象,如下所示:
var result=JsonConvert.Deserialize(jsonA)?.result??新名单;
var other=JsonConvert.Deserialize(jsonB)?.result??新名单;
然后您可以通过串联来合并它们,请记住,我们可能没有特定的索引,因此需要在那里创建对象:
result.Capacity=Math.Max(result.Count,other.Count)//为了获得更好的性能,可以删除
对于(var i=0;i
result
现在包含合并结果
注意我们假设没有重叠键。您需要帮助的代码在哪里?您是否意识到您的“JSON”根本就不是有效的JSON?还有:你自己试过什么?你遇到了什么问题?你研究了什么?
public static string MergeJson(string json1,string json2)
{
JObject obj_json_1 = JObject.Parse(json1);
JObject obj_json_1 = JObject.Parse(json2);
var lookup = obj_json_2.SelectTokens("result[*]").ToLookup(c => (string)c["id"]);
foreach (var std in obj_json_1.SelectTokens("result[*]"))
{
try
{
std["result"] = (new JArray(lookup[(string)std["id"]]));
}
catch (Exception e)
{
Console.WriteLine("Error in Merge Json : {0}", e.Message);
}
}
return obj_json_1.ToString();
}