如何在JSON.NET中组合/合并两个JArrays

tun*_*h24 12 c# json json.net

我无法弄清楚如何连接我使用JArray.Parse的两个JArray?必须保留数组的顺序,即第一个数组应该是第一个,而元素应该在几秒之后.

Aar*_*ron 25

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

 JArray test1 = JArray.Parse("[\"john\"]");
 JArray test2 = JArray.Parse("[\"doe\"]");
 test1.Merge(test2);
Run Code Online (Sandbox Code Playgroud)


Chr*_*ris 13

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

for(int i=0; i<jarrayTwo.Count; i++)
{
    jarrayOne.Add(jarrayTwo[i]);
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,jarrayOne现在将包含所有第一个数组的元素,后跟第二个数组的元素.您可以查看JArray文档以获取更多详细信息.


小智 10

您还可以使用union方法:

JArray test1 = JArray.Parse("[\"john\"]");
JArray test2 = JArray.Parse("[\"doe\"]");
test1 = new JArray(test1.Union(test2));
Run Code Online (Sandbox Code Playgroud)

现在test1

[
  "john",
  "doe"
]
Run Code Online (Sandbox Code Playgroud)

  • 这会生成一个新的JArray,保留旧的JArray (4认同)

Ron*_*erg 5

对于您有的一般情况,我的两分钱n JArray是:

IEnumerable<JArray> jarrays = ...
var concatenated = new JArray(jarrays.SelectMany(arr => arr));
Run Code Online (Sandbox Code Playgroud)

并将其投影到带有两个的原始问题上JArray

JArray jarr0 = ...
JArray jarr1 = ...
var concatenated = new JArray(new[] { jarr0, jarr1 }.SelectMany(arr => arr));
Run Code Online (Sandbox Code Playgroud)