0

我有两个运行JObject.FromObject()过的类似 JSON 对象。

在每个对象中都有一个带有其他对象数组的属性,如下所示:

文件1

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

文件2

{
  "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 不能有多个值

.

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

4

1 回答 1

3

为什么不包含"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);
于 2012-09-20T16:30:26.180 回答