How to merge two JObject?

advertisements

This question already has an answer here:

  • Merge two Json.NET arrays by concatenating contained elements 3 answers

I have a first json:

{
    "data": [{
      "id": "id1",
      "field": "field1"
    }],
    "paging": {
        "prev": "link1",
    }
}

and a second one:

{
    "data": [{
      "id": "id2",
      "field": "field2"
    }],
    "paging": {
        "prev": "link2",
    }
}

and I want to merge/union the two Data array, such as:

{
    "data": [{
      "id": "id1",
      "field": "field1"
    },
    {
      "id": "id2",
      "field": "field2"
    }]
}

(I don't care about about paging right now).

How can I do it quick and easy? This is my try:

var final = JsonConvert.SerializeObject(new { data = json1["data"].Union(json2["data"]) }, Newtonsoft.Json.Formatting.Indented).ToString();

but an Exception is raised: 'Newtonsoft.Json.Linq.JArray' does not contains a definition of 'Union'


JArray dataOfJson1=json1.SelectToken("data");

JArray dataofJson2=json2.SelectToken("data");

foreach(JObject innerData in dataofJson2)
{
    dataOfJson1.Add(innerData);
}