2013-04-04 3 views
7

私はいくつかのオブジェクトを持っているオブジェクトMVC 4のWeb APIは、カスタムのためのJSONのシリアライズは、以下のように

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

は後方であります私はこのようなJSONの結果を受け取る

{ 
    "ResponseCode":1, 
    "ResponseMessage":"It works!", 
    "ResponsePayload": 
    { 
    "FirstName":"Tom", 
    "LastName":"Cruise" 
    } 
} 

http://www.app123.com/api/team

を呼び出す:

{ 
    "ResponseCode":1, 
    "ResponseMessage":"It works!", 
    "ResponsePayload": 
    { 
    "TeamLeader": 
     { 
      "FirstName":"Jason", 
      "LastName":"Lien" 
     } 
     "TeamMember": 
     [ 
     { 
      "FirstName":"Tom", 
      "LastName":"Cruise" 
     }, 
     { 
      "FirstName":"Cindy", 
      "LastName":"Cullen" 
     } 
     ] 
    } 
} 

しかし、彼らはのために働くことはありませんえー http://www.app123.com/api/person

を呼び出して、ユーザーが私はこのようなJSONの結果を受け取ります私は、上記のようなJSON結果をASP.NET MVC 4で生成する方法を知っていますか?

答えて

5

この1つは私の作品。これ

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

を試してみて、あまりにも他のコントローラメソッドで同じ従います

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

は、我々はまた、[Serializableを]の応答をanotateする必要があり、人およびチームクラス。

+1

これは私が私の答えで意味したことです、JSONの結果と一緒にJSONの結果を返す! – Sandy

2

JSONを返す必要があります。

+0

あなたに役立たなかったかどうか教えてください。 – Sandy

+0

いいえ、それは動作していません –

+0

JsonはApiControllerのメンバではありません。コントローラのメンバではありません。これは動作しません。 – mgrenier

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

WebApiConfig.cs内に貼り付けたコードを追加しますか? –

関連する問題