2017-02-13 14 views
0

私はそれらを1つのオブジェクトにマージしたい3つの異なる配列を持っています。1つのオブジェクトに3つの異なるjson配列をマージする

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

resultsproblemissueresults変数のそれぞれに)個別にすべての配列をデシリアライズした後、私は試してみてください:

​​

が生成する

array 1 : [{"Id":1,"Number":"1234","Category":"Chocalte", "Status": "Error"}] 

heatingissues: [{"myId":3,"Id":"5801"}] 

problemissue: [{"myId":1,"Id":2,"Name":"Desktop"}] 

私は結果はこのようになりたいです次の出力:

{ 
    "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

関連する問題