2012-01-26 40 views

Respuesta

8

Puede usar la clase JavaScriptSerializer que está incorporada en el marco. Por ejemplo:

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

rendimientos:

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

Pero ya que usted habló de volver JSON en ASP.NET MVC 3 ya hay técnicas incorporadas que le permiten volver directamente objetos y tienen el subyacente la infraestructura se encarga de serializar este objeto en JSON para evitar contaminar su código con tales plomería.

Por ejemplo en ASP.NET MVC 3, se escribe una acción de controlador de devolver un 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); 
} 

usted ya no tendrá que preocuparse de fontanería. En ASP.NET MVC tiene acciones de controlador que devuelven resultados de acción y pasa modelos de vista a esos resultados de acción. En el caso de JsonResult es la infraestructura subyacente la que se encargará de serializar el modelo de vista que pasó a una cadena JSON y, además de eso, establecerá correctamente el encabezado de respuesta Content-Type en application/json.

+0

Mira que IE es bastante agresivo en cuanto a las solicitudes GET de almacenamiento en caché. Por lo general, se requerirá un atributo '[OutputCache]'. – jgauffin

2

La forma más sencilla puede ser la siguiente:

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

    //populate the list 

    return Json(myList); 
}