我有三个不同的数组,我想将它们合并到一个对象中。
array 1 : [{"Id":1,"Number":"1234","Category":"Chocalte", "Status": "Error"}]
heatingissues: [{"myId":3,"Id":"5801"}]
problemissue: [{"myId":1,"Id":2,"Name":"Desktop"}]
我希望结果是这样的:
{
"Id": 3,
"Number": "1190042293",
"Category": "Chocalte",
"heatingissues": [
{
"myId": 3,
"id": "5801"
}
],
"problemissue": [
{
"myId": 1,
"name": "Desktop"
}
]
}
在分别反序列化所有数组(分别反序列化为 results
和 problemissueresults
变量(后,我尝试:
var j = JsonConvert.SerializeObject(new{
results,
heatingissues= problemissueresults,
problemissue= problemissueresults
});
这将生成以下输出:
{
"results": [
{
"id": 3,
"Number": "1190042293",
"category": "Chocalte"
}
],
"heatingissues": [
{
"myId": 3,
"id": "5801"
}
],
"problemissue": [
{
"myId": 1,
"name": "Desktop"
}
]
}
如何避免这些结果?
在这种情况下,需要显式声明要序列化的对象的属性以匹配所需的格式。
用 C# 匿名类型的文档的话来说:
如果未在匿名类型中指定成员名称,编译器将为匿名类型成员提供与用于初始化它们的属性相同的名称
因此,您的result
被序列化为具有同名 json 键的数组。
试试这个:
var obj =
new
{
id = results[0].id,
number = results[0].number,
category = results[0].category,
heatingissues= problemissueresults,
problemissue= problemissueresults
};
var j = JsonConvert.SerializeObject(obj);
Newtonsoft json库支持合并操作。
http://www.newtonsoft.com/json/help/html/MergeJson.htm