使用C#返回JSON,如PHP json_encode

在PHP中返回一些JSON,我会这样做:

return json_encode(array('param1'=>'data1','param2'=>'data2'));

我如何以最简单的方式在C#ASP.NET MVC3中做等效的操作?

您可以使用框架内置的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

我总是使用JSON .Net: http : //json.codeplex.com/和文档: http : //james.newtonking.com/projects/json/help/

那么http://www.json.org/ (参见C#列表)?

最简单的方式可能是这样的:

 public JsonResult GetData() { var myList = new List(); //populate the list return Json(myList); }