2012-01-26 10 views

答えて

8

フレームワークに組み込まれているJavaScriptSerializerクラスを使用できます。たとえば、次のように

var serializer = new JavaScriptSerializer(); 
string json = serializer.Serialize(new { param1 = "data1", param2 = "data2" }); 

利回り:

{"param1":"data1","param2":"data2"} 

しかし、あなたは、ASP.NET MVC 3でJSONを返すについて話しましたので、あなたが直接オブジェクトを返すと、根底を持つことができるよう、既にビルトイン技術が存在しますインフラストラクチャでこのオブジェクトをJSONにシリアライズして、そのような配管でコードを汚染しないようにします。

たとえばASP.NET MVC 3であなたは、単にJsonResultを返すコントローラのアクションを記述は:

public ActionResult Foo() 
{ 
    // it's an anonymous object but you could have used just any 
    // view model as you like 
    var model = new { param1 = "data1", param2 = "data2" }; 
    return Json(model, JsonRequestBehavior.AllowGet); 
} 

あなたは、もはや配管を心配する必要はありません。 ASP.NET MVCでは、アクション結果を返すコントローラアクションがあり、そのアクション結果にビューモデルを渡します。 JsonResultの場合は、JSON文字列に渡したビューモデルをシリアル化し、さらにContent-Type応答ヘッダーをapplication/jsonに適切に設定することに加えて、基盤となるインフラストラクチャです。

+0

IEがGETリクエストをキャッシュについてはかなり積極的であることに注意してください。通常は、[OutputCache]属性が必要です。 – jgauffin

2

最も簡単な方法:

public JsonResult GetData() 
{  
    var myList = new List<MyType>(); 

    //populate the list 

    return Json(myList); 
}