【问题标题】:How to combine/merge two JArrays in JSON.NET如何在 JSON.NET 中组合/合并两个 JArray
【发布时间】:2013-03-12 20:28:51
【问题描述】:

我不知道如何连接使用 JArray.Parse 获得的两个 JArray?必须保留数组的顺序,即第一个数组应该是第一个,以秒为单位的元素应该在后面。

【问题讨论】:

  • 就是这样……我不知道该怎么办。我是 JSON.NET 的新手,期待 Append 或 Concatenate API,但没有看到?

标签: c# json json.net


【解决方案1】:

我使用了Merge方法,修改了原来的JArray:

 JArray test1 = JArray.Parse("[\"john\"]");
 JArray test2 = JArray.Parse("[\"doe\"]");
 test1.Merge(test2);

【讨论】:

    【解决方案2】:

    您可以通过调用JArray.Add(element) 将元素添加到一个JArray,其中元素来自第二个JArray。您需要遍历第二个 JArray 以添加所有这些元素,但这将完成您想要的:

    for(int i=0; i<jarrayTwo.Count; i++)
    {
        jarrayOne.Add(jarrayTwo[i]);
    }
    

    在上面的示例中,jarrayOne 现在将包含第一个数组的所有元素,然后依次包含第二个数组的元素。您可以通过JArray documentation查看更多详细信息。

    【讨论】:

      【解决方案3】:

      也可以使用联合方法:

      JArray test1 = JArray.Parse("[\"john\"]");
      JArray test2 = JArray.Parse("[\"doe\"]");
      test1 = new JArray(test1.Union(test2));
      

      现在test1

      [
        "john",
        "doe"
      ]
      

      【讨论】:

      • 这会生成一个新的 JArray,保留旧的原样
      【解决方案4】:

      我的两分钱用于您拥有n JArray 的通用案例:

      IEnumerable<JArray> jarrays = ...
      var concatenated = new JArray(jarrays.SelectMany(arr => arr));
      

      并使用两个JArray 将其投影到原始问题上:

      JArray jarr0 = ...
      JArray jarr1 = ...
      var concatenated = new JArray(new[] { jarr0, jarr1 }.SelectMany(arr => arr));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-17
        相关资源
        最近更新 更多