JSON.NETを使用して2つのJsonオブジェクトをマージする必要がある以下の要件があります。以下 サンプルコード上の例ではJSON.NETを使用して2つの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がある「オレンジ」性質を持っていない場合は、hightlightedコードなしで働いていますすでに食品に入っている場合
上記の両方のプロパティが同じ場合、上記のコードは機能しません。 linqを使用して既存の要素を見つける方法はありますか?存在する場合は、json以外の要素を新しいプロパティで更新するためにマージします。
よろしく、 アマール
を。この場合、マージする前に "fruit" ":{}でバナナトークンをラップする必要があります:foodJsonToken.Merge(bananaToken、new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Union }); – Rakib