我有这个用户类
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 :(得分:4)
通常,命名最外层JSON变量(根属性,可以这么说)的“技巧”是创建一个具有该属性的匿名对象:
return Json(new { Users = users }, JsonRequestBehavior.AllowGet);
将返回一个包含数组属性(Users
)的对象。
如果您需要一个具有一个对象属性(Users
)的JSON对象,该属性本身有两个属性(Chris
和Jason
),请考虑使用{ {1}}(密钥是用户名)而不是Dictionary<string, User>
:
List<User>
Json.NET会将字典序列化为所需的输出JSON格式。
答案 1 :(得分: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);