7

次のようにいくつかのオブジェクトがあります。

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 メソッドを使用したチーム コントローラーです。

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 結果を生成する方法を知っていますか?

4

3 に答える 3

10

まず、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);
}
于 2013-06-13T07:35:52.967 に答える
2

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);
}
}

他のコントローラーメソッドでも同じです..

于 2013-04-04T06:05:25.397 に答える