2016-08-23 8 views
0

私はエンティティフレームワークを使用してデータベースからデータを取得し、JSONにシリアル化しています。私のJSONレスポンスは以下のようになります。 Shoud私のモデルにitemsのプロパティを追加してJSONを作りたいですか?ありがとう。asp.net mvcで複雑なJsonオブジェクトを返す方法

希望JSON

{ 
     "items" : [ 
     { 
      "Id": 1, 
      "AdContent":"Content1" 
     }, 
     { 
      "Id": 2, 
      "AdContent":"Content2" 
     }, 
     { 
      "Id": 3, 
      "AdContent":"Content3" 
     } 
     ] 
} 

現在のJSON私が受け取る

[ 
    { 
     "Id":1, 
     "AdContent":"Content1" 
    }, 
    { 
     "Id":2, 
     "AdContent":"Content2" 
    }, 
    { 
     "Id":3, 
     "AdContent":"Content3" 
    } 
] 

{ 

コントローラ

public JsonResult GetJson() 
{ 
    using (var db = new DoskaUsContext()) 
    { 
     List<AdViewModel> list = db.Ads.Select(x => new AdViewModel 
     { 
      Id = x.AdId,      
      AdContent = x.AdContent 
     }).ToList(); 

     return Json(list, JsonRequestBehavior.AllowGet); 
    } 
} 

モデル

public class AdViewModel 
    { 
     public int Id { get; set; } 
     public string AdContent { get; set; }   
    } 
+1

'リターンJSON(新しい{アイテム=リスト}、JsonRequestBehavior.AllowGet)としてAdViewModelのコレクションを保持する別のモデルを作成し、' –

答えて

3

匿名オブジェクトは、一つの解決策Json(new {items=list},...)です。

この問題を解決するための一般的なアプローチ - 強く型付けされたクラスをhttp://json2csharp.com/で生成し、生成されたクラスを介して結果を取り込むか、少なくともあなたのコードから欠落しているものを見てください。 - RootObjectリストプロパティitems

public class Item 
{ 
    public int Id { get; set; } 
    public string AdContent { get; set; } 
} 

public class RootObject 
{ 
    public List<Item> items { get; set; } 
} 

パズルの欠けている部分を示しています。この特定のケースで

は、コードを生成しました。

1

アイテム

public class AdViewModel 
    { 
     public int Id { get; set; } 
     public string AdContent { get; set; }   
    } 

public class NewModel 
    { 
     public AdViewModel items { get; set; } 
    } 
関連する問題