2010-06-01 39 views
5

Sto tentando di deserializzare un oggetto generato da LinqToSql. L'utente è autorizzato a modificare i dati dell'oggetto nella vista e quindi viene reindirizzato al controller. I dati modificati arrivano in JSON. Come deve essere questa azione?Deserializzare oggetti JSON in controller MVC Asp.Net

Qualcosa di simile ...

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

C'è una classe statica utile bello nel quadro che mi manca? O devo creare un DataContract?

Molte grazie

risposta

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: Spiacenti ... appena notato che si sta passando un oggetto invece di stringa .... quindi sarà necessario utilizzare System.Runtime.Serialization.Json.DataContractJsonSerializer:

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

bello, grazie (e sì, forse ero un po 'pigro per rtfm ;-)) –

+0

Contento di aver potuto aiutare! –

+2

+1 per aggiornamento;) –