Tuy*_*yen 7 json asp.net-mvc-4
我有几个对象如下:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
(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;
}
}
Run Code Online (Sandbox Code Playgroud)
(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;
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是用户拨打 http://www.app123.com/api/person后
我收到这样的JSON结果:
{
"ResponseCode":1,
"ResponseMessage":"It works!",
"ResponsePayload":
{
"FirstName":"Tom",
"LastName":"Cruise"
}
}
Run Code Online (Sandbox Code Playgroud)
并致电 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"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
但它们从不为我工作,你知道如何使用ASP.NET MVC 4生成如上所述的JSON结果吗?
Tie*_* Do 10
首先,确保使用JSON格式化程序,例如将以下代码添加到Application_Start
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
Run Code Online (Sandbox Code Playgroud)
其次,只需返回自定义对象,JSON格式化程序将完成其余工作,您将在客户端获得不错的JSON数据.
[HttpGet]
public HttpResponseMessage GetPeopleList()
{
var people = // create a list of person here...
return Request.CreateResponse(HttpStatusCode.OK, people);
}
Run Code Online (Sandbox Code Playgroud)
这个对我有用:
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;
}
Run Code Online (Sandbox Code Playgroud)
我们还需要为Response,Person和Team类分配[Serializable].
| 归档时间: |
|
| 查看次数: |
25341 次 |
| 最近记录: |