C# 如何组合Newtonsoft JSON.Net中两个作业对象的两个数组?
我有两个类似的JSON对象,我在上面运行了C# 如何组合Newtonsoft JSON.Net中两个作业对象的两个数组?,c#,json.net,C#,Json.net,我有两个类似的JSON对象,我在上面运行了JObject.FromObject() 在每个对象中都有一个具有其他对象数组的属性,如下所示: 文件1 文档2 我有两个这样的对象,正在尝试将数据字段从一个添加到另一个中-基本上是将数据从一个“数据”属性的数组添加到另一个属性的数组中 最终结果应该是这样的: { "Title": "Alpha", "data": [ { "Id": "Fox2", "Field": "King6", "Value":
JObject.FromObject()
在每个对象中都有一个具有其他对象数组的属性,如下所示:
文件1
文档2
我有两个这样的对象,正在尝试将数据字段从一个添加到另一个中-基本上是将数据从一个“数据”属性的数组添加到另一个属性的数组中
最终结果应该是这样的:
{
"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);
为什么不在最后一个对象中包含
“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);
我把我实际使用的文件简化了(它们确实有更多的字段,而不仅仅是标题和数据。不幸的是,在这种情况下,直接完全合并它们不是一个选项。我需要将两个数据字段合并到一个数组中。不过,谢谢。@ServareVita3请看编辑。这正是您想要的,但仍然很奇怪。我会尝试一下,让您知道。谢谢!我把文档简化了。)我实际上用的是什么(它们确实有更多的字段,而不仅仅是标题和数据。不幸的是,在这种情况下,直接将它们完全合并不是一个选项。我需要将两个数据字段合并到一个数组中。不过,谢谢。@Servarevita3查看编辑。这正是您想要的,但仍然很奇怪。我会尝试一下,让您知道。谢谢!