我有几个JObject,它们从不同的地方返回,但具有相同的属性。我需要将其连接/合并到一个更大的jObject中。这可能吗?我该怎么做?
我希望它具有与单个对象相同的性质。例如。
jObject1 = { "data": [{"name": "foo","id": "1234" }]};
jObject2 = {"data": [{ "name": "foo2", "id": "5678" }]};
导致了这样的事情。
jobject3 = { "data": [{ "name": "foo", "id": "1234"}, { "name": "foo2", "id": "5678" }]};
我正在用C#进行编码,到目前为止,我唯一想做的就是这样一件无效的事情。真的不知道该怎么开始,真的什么都做不了。
jobject3 = jObject1.Concat(jObject2);
我正在尝试手动循环遍历每个对象并构建一个新对象。我想我已经接近了,但在添加第二个项目(oAlldepartment.Add)时不断出现错误,该项目说"无法将属性添加到Newtonsoft.Json.Linq.JObject。对象上已经存在同名的属性。".
dynamicdynObj=JsonConvert.DescializeObject(人);foreach(dynObj.data中的var项){string id=item.id;string name=item.name;
department = getdepartment(id);
JObject oDepartment = new JObject();
try
{
if (!String.IsNullOrEmpty(department))
oDepartment = JObject.Parse(department);
}
catch (Exception ex)
{
}
JArray departmentArray = new JArray();
if (oDepartment != null)
{
foreach (var x in oDepartment["data"].Children())
{
try
{
JObject departmentObject = new JObject();
((JObject)departmentObject).Add(new JProperty("name", x["name"]));
((JObject)departmentObject).Add(new JProperty("department", new JObject(new JProperty("name", x["department"]["name"]))));
((JObject)departmentObject).Add(new JProperty("hire_date", x["hire_date"]));
((JObject)departmentObject).Add(new JProperty("description", x["description"]));
departmentArray.Add(departmentObject);
}
catch (Exception ex)
{
}
((JObject)x).Add(new JProperty("itemtype", "post"));
}
try
{
oAlldepartment.Add(new JProperty("", new JArray(departmentArray)));
}
catch (Exception ex)
{
}
}
}
谢谢,
Rhonda
我最终做的是创建一个类,定义我想要返回的json,并添加每个单独对象的json属性。另一个好处是,该方法返回给客户端的数据更干净,因为我只需要担心我需要的属性,而不用担心一个巨大的json对象,其中包含一堆我不需要的属性。
Rhonda