2010-06-01 44 views
5

Estoy tratando de deserializar un objeto que fue generado por LinqToSql. El usuario puede editar los datos del objeto en la vista y luego se vuelve a publicar en el controlador. Los datos editados vienen en JSON. ¿Cómo debe ser esta acción?Deserializar Objetos JSON en Asp.Net MVC Controller

Algo así como ...

public ActionResult(JsonObject json) 
{ 
    MyClass c = Jsonify(json) as MyClass; 
} 

¿Existe una buena clase estática útil en el marco que me falta? ¿O tengo que crear un DataContract?

Muchas gracias

Respuesta

21

System.Web.Script.Serialization.JavaScriptSerializer

public ActionResult Blah(JsonObject json) 
{ 
    JavaScriptSerializer js = new JavaScriptSerializer(); 
    var c = js.Deserialize<MyClass>(json); 
    return View(c); 
} 

EDIT: Vaya ... acabo de dar cuenta que está pasando un objeto en lugar de cuerda .... por lo que tendrá que utilizar System.Runtime.Serialization.Json.DataContractJsonSerializer:

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(MyClass)); 
MyClass c = (MyClass)serializer.ReadObject(json); 
+0

nice, gracias (y tal vez yo era un poco perezoso para rtfm ;-)) –

+0

Me alegro de poder ayudar! –

+2

+1 para actualizar;) –

Cuestiones relacionadas