2014-02-14 30 views
0

ASP MVC返回JSON我有这样的用户类如何与变量名

public class User 
{ 
    public string name { get; set; } 
    public string phone { get; set; } 
    public string address { get; set; } 
} 

var users = new List<User>(){ 
    new User(){ 
     name = "Chriss", 
     phone = "45096820", 
     address = "xxx, street." 
    }, 
    ... 
}; 

如何退还使用ASP MVC Json的方法

return Json(users, JsonRequestBehavior.AllowGet); 

,返回JSON格式看起来像下面

"Users" : 
    { 
    "Chris" : 
     { 
      "phone" : "45096820", 
      "address" : "xxx, street." 
     }, 
    "Jason" : 
     { 
      "phone" : "406980968", 
      "address" : "xxx, street" 
     } 
    } 
+0

如果你有2个用户使用相同的名称,会发生什么? –

+1

请注意,您所展示的内容不是有效的JSON ... –

回答

1

为了得到完全按照你想要的一样JSON结构,你将不得不修改您的User类的样子:

public class User 
{ 
    public string phone { get; set; } 
    public string address { get; set; } 
} 

(没有名字,这个名字会在你的字典中的关键)

,并使用字典:

Dictionary<string, User> dictionary = new Dictionary<string, Controllers.User>(); 
     dictionary.Add("Chris", new User() { phone = "45096820", address = "xxx, street" }); 
     dictionary.Add("Jason", new User() { phone = "406980968", address = "xxx, street" }); 
     return Json(new { Users = dictionary }, JsonRequestBehavior.AllowGet); 
4

通常,命名最外面的JSON变量(即根属性,可以这么说)的“诀窍”是创建一个匿名与正是属性对象:

return Json(new { Users = users }, JsonRequestBehavior.AllowGet); 

将返回一个对象与一个阵列属性(Users)。

如果你需要一个对象一个JSON对象属性(Users),它本身有两个属性(ChrisJason),可以考虑使用,而不是一个List<User>一个Dictionary<string, User>(主要是用户的姓名):

var users = new Dictionary<string, User> 
{ 
    { "Chris", new User { phone = "45096820", address = "xxx, street." } }, 
    { "Jason", new User { phone = "406980968", address = "xxx, street." } } 
}; 

Json.NET将序列化您想要的输出JSON格式的字典。

+0

请注意名称?名称标题不在结果中。 –

+0

@JeeShenLee现在你比我更新我的答案更快速地输入你的评论。 ;) –