如何在asp.net mvc中返回复杂的Json对象

时间:2016-08-23 03:45:38

标签: c# asp.net json asp.net-mvc asp.net-mvc-4

我正在使用实体框架从数据库中获取数据并将其序列化为JSON。我希望我的JSON响应如下所示。 Shoud我将items属性添加到我的模型并制作我想要的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 个答案:

答案 0 :(得分:4)

匿名对象是一个解决方案Json(new {items=list},...)

解决该问题的一般方法 - 使用http://json2csharp.com/生成强类型类,并通过生成的类填充结果或至少查看代码中缺少的内容。

在这种特殊情况下生成代码:

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

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

其中显示了拼图的缺失部分 - RootObject,其中包含列表属性items