合并所有嵌套的Json对象

时间:2019-07-09 08:53:22

标签: c# json

我有一个以下json。我想将所有嵌套的json对象合并为一个。

    [
      {
        "2": "a",
        "3": "a"
      },
      {
        "2": "f",
        "3": "a",
        "4": "p"
      },
      {
        "2": "n",
        "3": "o",
        "4": "t"
      }
    ]

因此,以上json的输出为

[  
   {  
      "0":"a",
      "1":"a",
      "2":"f",
      "3":"a",
      "4":"p",
      "5":"n",
      "6":"o",
      "7":"t"
   }
]

我试图解析json数组,然后添加所有值并将其附加到另一个数组。但是,还有其他优雅的解决方案可以将所有嵌套的json对象合并为一个吗?

2 个答案:

答案 0 :(得分:2)

鉴于您需要更改索引,因此手动合并是不可避免的。

例如Linq的build可用于合并:

SelectMany

答案 1 :(得分:1)

您可以使用名为json .net的工具 检查以下代码:

var serializer = new XmlSerializer(model.GetType());
        serializer.Serialize(sw, model);
        JObject o1 = JObject.Parse(@"{
         'FirstName': 'John',
         'LastName': 'Smith',
         'Enabled': false,
         'Roles': [ 'User' ]
          }");
        JObject o2 = JObject.Parse(@"{
         'Enabled': true,
         'Roles': [ 'User', 'Admin' ]
          }");

        o1.Merge(o2, new JsonMergeSettings
        {
            // union array values together to avoid duplicates
            MergeArrayHandling = MergeArrayHandling.Union
        });

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

请检查链接: https://www.newtonsoft.com/json/help/html/MergeJson.htm