В 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"}
Но так как вы говорили о возврате JSON в ASP.NET MVC 3, есть уже встроенные методы, которые позволяют вам напрямую возвращать объекты и иметь базовую инфраструктуру, заботясь о сериализации этого объекта в 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<MyType>(); //populate the list return Json(myList); }