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

标签 c# json json.net

我有两个代表 JSON 对象数组的 JToken,我想合并它们。 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
};

我怎样才能让它发挥作用?

最佳答案

JContainer.Merge()MergeArrayHandling.Concat 一起使用。

Json.NET 6 Release 4 开始可用.因此,如果您的数组位于 JContainer(例如 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"
//   ]
// }

关于c# - 通过连接包含的元素合并两个 Json.NET 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14121010/

相关文章:

c# - 对于每个(): Why can't use break/continue inside

c# - 具有可变数量参数的匿名方法

c# - IEnumerable 返回优先

c# - 使用 CURL 发送到 Azure 函数的 Newtonsoft 反序列化 JSON 时出现异常

c# - Newtonsoft.Json 12.0.1 无法使用运行设置代码覆盖排除值

c# - 如何从.Net中的远程设备接收TCP IP消息

mysql - 如何使用带有通配符表达式的 select 语句删除 mysql 中 json 文档的属性

java - jquery 在 post 请求上发送表单数据,但是当我修改 servlet 以返回 json 并修改 jquery 以接受 json servlet 时未接收 null

php - 使用 PHP JSON 问题的 SQL 数据库中的 Google Vis 注释时间线

c# - 如何仅对某些属性应用缩进序列化?