2017-02-13 110 views
0

我有三個不同的數組,我想將它們合併到一個對象中。將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變量)之後,我嘗試:

​​

產生的以下輸出:

{ 
    "results": [ 
     { 
      "id": 3, 
      "Number": "1190042293", 
      "category": "Chocalte" 
     } 
    ], 
    "heatingissues": [ 
     { 
      "myId": 3, 
      "id": "5801" 
     } 
    ], 
    "problemissue": [ 
     { 
      "myId": 1, 
      "name": "Desktop" 
     } 
    ] 
} 

我該如何避免這些結果?

回答

1

在這種情況下,您需要明確聲明要序列化的對象的屬性以匹配所需的格式。

在爲C#匿名類型的documentation的話:

如果不指定匿名類型成員的名字,編譯器爲匿名類型成員相同的名稱屬性被用來初始化它們

所以你的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); 
+0

什麼的情況下,第一陣列做不是一個數組,但一個目的?? – pankaj

+0

您可以直接訪問對象的屬性。 'id = results.id'(假設該對象具有'id'屬性) – Sam

+0

:這不會是一種更簡潔的方式,我有50個屬性 – pankaj

相關問題