需要根据特定条件使用c#合并两个json对象。如果源JSON的“ Enabled”属性为“ false”,而目标JSON的属性与“ true”相同,则需要替换该值。其他明智的做法是无需替换,保持不变。
我尝试过这样:
Start 0
After sleep 0
page commited 0
page is loading 0
page completed 0
Start 1
page is loading 1
After sleep 1
page commited 1
page completed 1
Start 2
page is loading 2
page commited 2
page completed 2
....
它与整个对象重叠。需要根据条件进行合并。预先感谢。
o1.Merge(o2, new JsonMergeSettings
{
MergeArrayHandling = MergeArrayHandling.Merge
});
答案 0 :(得分:0)
如果源JSON的“ Enabled”属性为“ false”,而目标JSON的属性与“ true”相同,则需要替换该值。其他明智的做法是无需替换,保持不变。
一种方法是,
Actions
数组。Name
和Enabled
。Name
和Enabled
。Name
是否匹配,还检查来自源json的对象的Enabled
属性为false
和来自目标json的对象的Enabled
属性是否为true
。 Enabled
的值重写为true
。string json1 = "Your source json";
string json2 = "Your destination json";
JObject jObject1 = JObject.Parse(json1);
JObject jObject2 = JObject.Parse(json2);
//1
foreach (JObject obj2 in (JArray)jObject2["Actions"])
{
//2
var key2 = obj2["Name"].ToObject<string>();
var value2 = obj2["Enabled"].ToObject<bool>();
//3
var obj1 = jObject1["Actions"].Where(x => x["Name"].ToString() == key2).FirstOrDefault();
//4
var key1 = obj1["Name"].ToObject<string>();
var value1 = obj1["Enabled"].ToObject<bool>();
//5
if (key1 == key2 && value1 == false && value2 == true)
{
//6
obj2["Enabled"] = true;
}
}
string outputJson = jObject2.ToString();