MVC 4 Web API - JSON-Serialisierung für benutzerdefinierte Objekte
Ich habe mehrere Objekte wie folgt:
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)
Dies ist die Person, die controller mit der Get-Methode:
public class PersonController : ApiController
{
public Response Get()
{
Person tom = new Person("Tom", "Cruise");
Response response = new Response(1, "It works!", tom);
return response;
}
}
(2)
Dies ist die Team-controller mit Get-Methode:
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;
}
}
Was ich will, ist nach der aufrufenden Benutzers
http://www.app123.com/api/person
Ich erhalten JSON-Ergebnis wie dieses:
{
"ResponseCode":1,
"ResponseMessage":"It works!",
"ResponsePayload":
{
"FirstName":"Tom",
"LastName":"Cruise"
}
}
und aufrufen
http://www.app123.com/api/team
Ich erhalten JSON-Ergebnis wie dieses:
{
"ResponseCode":1,
"ResponseMessage":"It works!",
"ResponsePayload":
{
"TeamLeader":
{
"FirstName":"Jason",
"LastName":"Lien"
}
"TeamMember":
[
{
"FirstName":"Tom",
"LastName":"Cruise"
},
{
"FirstName":"Cindy",
"LastName":"Cullen"
}
]
}
}
Aber Sie nie für mich arbeiten, wissen Sie, wie Sie produzieren das JSON-Ergebnis wie oben, mit ASP.NET MVC 4?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstens, stellen Sie sicher, dass Sie mit JSON-Formatierer, z.B. das hinzufügen folgenden code Application_Start
Zweiten, einfach wieder das benutzerdefinierte Objekt, JSON formatter wird den rest tun und erhalten Sie schöne JSON-Daten auf der client-Seite.
Dieser arbeitet für mich:
Müssen wir auch anotate [Serializable] für Antwort, Person und Team Klassen.
müssen Sie JSON zurückgeben. Versuchen Sie, diese
und Folgen Sie dasselbe bei anderen controller-Methode zu..