[英]MVC 4 Web API - JSON serialization for custom objects
我有几个对象如下:
public class Person
{
string FirstName;
string LastName;
public Person(string fn, string ln)
{
FirstName = fn;
LastName = ln;
}
}
public class Team
{
string TeamName;
Person TeamLeader;
List<Person> TeamMembers;
public Team(string name, Person lead, List<Person> members)
{
TeamName = name;
TeamLeader = lead;
TeamMembers = members;
}
}
public class Response
{
int ResponseCode;
string ResponseMessage;
object ResponsePayload;
public Response(int code, string message, object payload)
{
ResponseCode = code;
ResponseMessage = message;
ResponsePayload = payload;
}
}
(1)这是带有Get方法的Person控制器:
public class PersonController : ApiController
{
public Response Get()
{
Person tom = new Person("Tom", "Cruise");
Response response = new Response(1, "It works!", tom);
return response;
}
}
(2)这是带有Get方法的Team控制器:
public class TeamController : ApiController
{
public Response Get()
{
Person tom = new Person("Tom", "Cruise");
Person cindy = new Person("Cindy", "Cullen");
Person jason = new Person("Jason","Lien");
Team awesome = new Team("Awesome", jason, new List<Person>(){tom,cindy});
Response response = new Response(1, "It works!", awesome);
return response;
}
}
我想要的是用户拨打http://www.app123.com/api/person后
我收到这样的JSON结果:
{
"ResponseCode":1,
"ResponseMessage":"It works!",
"ResponsePayload":
{
"FirstName":"Tom",
"LastName":"Cruise"
}
}
并致电http://www.app123.com/api/team
我收到这样的JSON结果:
{
"ResponseCode":1,
"ResponseMessage":"It works!",
"ResponsePayload":
{
"TeamLeader":
{
"FirstName":"Jason",
"LastName":"Lien"
}
"TeamMember":
[
{
"FirstName":"Tom",
"LastName":"Cruise"
},
{
"FirstName":"Cindy",
"LastName":"Cullen"
}
]
}
}
但它们从不为我工作,你知道如何使用ASP.NET MVC 4生成如上所述的JSON结果吗?
首先,确保使用JSON格式化程序,例如将以下代码添加到Application_Start
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
其次,只需返回自定义对象,JSON格式化程序将完成其余工作,您将在客户端获得不错的JSON数据。
[HttpGet]
public HttpResponseMessage GetPeopleList()
{
var people = // create a list of person here...
return Request.CreateResponse(HttpStatusCode.OK, people);
}
这个对我有用:
public object Get()
{
Person tom = new Person("Tom", "Cruise");
Person cindy = new Person("Cindy", "Cullen");
Person jason = new Person("Jason", "Lien");
Team awesome = new Team("Awesome", jason, new List<Person>() { tom, cindy });
Response response = new Response(1, "It works!", awesome);
JsonResult jsonResult = new JsonResult {
Data= response,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
return jsonResult.Data;
}
我们还需要为Response,Person和Team类分配[Serializable] 。
你需要返回JSON。 试试这个
public class PersonController : ApiController
{
public Response Get()
{
Person tom = new Person("Tom", "Cruise");
Response response = new Response(1, "It works!", tom);
return Json(response, JsonRequestBehavior.AllowGet);
}
}
并且在其他控制器方法中也遵循相同的..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.