[英]Merge two JSON Objects based on condition using c#
需要根據特定條件使用 c# 合並兩個 json 對象。 如果源 JSON 的“啟用”屬性為“false”,而目標 JSON 的屬性與“true”相同,則需要替換該值。 其他明智的無需更換保持不變。
我試過這樣:
o1.Merge(o2, new JsonMergeSettings
{
MergeArrayHandling = MergeArrayHandling.Merge
});
它與整個對象重疊。 需要根據條件合並。 提前致謝。
JSON 1:
{
"Name": "Sample",
"Array": [],
"Actions": [
{
"Name": "A",
"Enabled": false
},
{
"Name": "B",
"Enabled": true
}
]
}
JSON 2 :
{
"Name": "Sample",
"Array": [],
"Actions": [
{
"Name": "A",
"Enabled": true
},
{
"Name": "B",
"Enabled": false
}
]
}
I need Result JSON as below.
{
"Name": "Sample",
"Tabs": [],
"Actions": [
{
"Name": "A",
"Enabled": true
},
{
"Name": "B",
"Enabled": true
}
]
}
如果源 JSON 的“啟用”屬性為“false”,而目標 JSON 的屬性與“true”相同,則需要替換該值。 其他明智的無需更換保持不變。
一種方法是,
Actions
數組。Name
和Enabled
。Name
和Enabled
。Name
從JSON同時匹配對象,並同時檢查Enabled
從源JSON對象的屬性是false
,並Enabled
從目的地JSON對象的屬性為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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.