1
我有以下需求,我需要使用JSON.NET合併兩個Json對象。 下面是示例代碼如何使用JSON.NET合併兩個json對象
string jsonText = @"
{
""food"": {
""fruit"": {
""apple"": {
""colour"": ""red"",
""size"": ""small""
},
""orange"": {
""colour"": ""orange"",
""size"": ""large""
}
}
}
}";
var foodJsonObj = JObject.Parse(jsonText);
var foodJsonToken = foodJsonObj.SelectToken("food.fruit") as JObject;
var bananaJson = JObject.Parse(@"{ ""banana"" : { ""colour"": ""yellow"", ""size"": ""medium""}, ""simpletype"":""simplevalue"", ""orange"":{ ""newprop"": ""newpropvalue"" } }");
var bananaToken = bananaJson as JObject;
foreach (var token1 in bananaToken)
{
**var existingTokens = foodJsonToken.Children();
foreach (var item in existingTokens)
{
var existingObject = item as JObject;
}
if (existingTokens.Contains(token1.Key))
{
foodJsonToken.Merge(token1, new JsonMergeSettings
{
MergeArrayHandling = MergeArrayHandling.Union
});
}**
else
{
foodJsonToken.Add(token1.Key, token1.Value);
}
}
json = foodJsonToken.ToString();
在上面的例子中,我要香蕉JSON合併到食品JSON
上面的代碼工作,而不在突出顯示的代碼,如果bananajson沒有「橙」財產已經在食物json
如果兩者都具有相似的一組屬性,上面的代碼不起作用。 有什麼方法可以使用linq來查找現有的元素,如果存在,我想合併json否則它將更新源與新的屬性。
問候, 阿馬爾
你爲什麼不只是用它來代替循環。在這種情況下,您必須在合併之前用「」水果「」{:}包裝香蕉標記:foodJsonToken.Merge(bananaToken,new JsonMergeSettings {MergeArrayHandling = MergeArrayHandling.Union }); – Rakib