在一个对象中合并 3 个不同的 json 数组



我有三个不同的数组,我想将它们合并到一个对象中。

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"
        }
    ]
}
在分别反序列化

所有数组(分别反序列化为 resultsproblemissueresults 变量(后,我尝试:

  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

相关内容

  • 没有找到相关文章

最新更新