如何在NewtonsoftJSON.Net中组合来自两个JObject的两个数组



我有两个类似的JSON对象,我在上面运行了JObject.FromObject()

在每个对象中都有一个属性,其中包含一组其他对象,如:

Doc1

{
"Title": "Alpha",
"data": [
{
"Id": "Fox2",
"Field": "King6",
"Value": "Alpha",
"Description": "Tango"
}
]
}

Doc2

{
"Title": "Bravo",
"data": [
{
"Id": "Kilo",
"Field": "Echo",
"Value": "Romeo",
"Description": "Jester"
}
]
}

我有两个这样的对象,并试图将数据字段从一个添加到另一个中——基本上是将一个"数据"属性的数组中的数据添加到其他的数组中。

最终结果应该是这样的:

{
"Title": "Alpha",
"data": [
{
"Id": "Fox2",
"Field": "King6",
"Value": "Alpha",
"Description": "Tango"
},
{
"Id": "Kilo",
"Field": "Echo",
"Value": "Romeo",
"Description": "Jester"
}
]
}

我试图在不进行反序列化和使用组合字符串等的情况下完成这项工作。

我尝试过这种变体:

var data = JObject.FromObject(doc1);
var editData = JObject.FromObject(doc2);

foreach (var editItem in editData.Property("data").Children())                                
{
data.Property("data").Add(editItem.Children());
}

然而,我一直收到这样的错误:

Newtonsoft.Json.Linq.JProperty不能有多个值

我应该如何尝试组合数组?

为什么不在最终对象中包含"Title": "Bravo",

我会那样做:

var j1 = (JObject)JsonConvert.DeserializeObject(json1);
var j2 = (JObject)JsonConvert.DeserializeObject(json2);
var jArray = new JArray(j1, j2);
var str = jArray.ToString();

编辑

var final = JsonConvert.SerializeObject( 
new {Title=j1["Title"], data=j1["data"].Union(j2["data"])},
Newtonsoft.Json.Formatting.Indented);

相关内容

  • 没有找到相关文章

最新更新