通过连接包含的元素合并两个Json.NET数组

src*_*091 7 c# json json.net

我有两个JToken代表JSON对象数组,我想合并它们.JToken有一个方法,但当我尝试使用它时Concat它会产生null结果.

Action<JToken> Ok = (x) =>
{
    Debug.WriteLine(x);
    /* outputs
    [
      {
        "id": 1,
      },
      {
        "id": 2,
      }
    ]
    */

    x = (x).Concat<JToken>(x) as JToken;
    Debug.WriteLine(x); // null
};
Run Code Online (Sandbox Code Playgroud)

我怎样才能使它工作?

the*_*Dmi 27

使用JContainer.Merge()MergeArrayHandling.Concat.

Json.NET 6 Release 4开始提供此功能.因此,如果您的阵列位于JContainer(例如a JObject)中,这是一个简单而强大的解决方案.

例:

JObject o1 = JObject.Parse(@"{
  'FirstName': 'John',
  'LastName': 'Smith',
  'Enabled': false,
  'Roles': [ 'User' ]
}");
JObject o2 = JObject.Parse(@"{
  'Enabled': true,
  'Roles': [ 'Operator', 'Admin' ]
}");

o1.Merge(o2, new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Concat });

string json = o1.ToString();
// {
//   "FirstName": "John",
//   "LastName": "Smith",
//   "Enabled": true,
//   "Roles": [
//     "User",
//     "Operator",
//     "Admin"
//   ]
// }
Run Code Online (Sandbox Code Playgroud)


src*_*091 7

JToken.FromObject(x.Concat(x))
Run Code Online (Sandbox Code Playgroud)