2010-06-01 53 views
5

我试图反序列化由LinqToSql生成的对象。用户可以在视图中编辑对象的数据,然后将其发送回控制器。编辑的数据以JSON格式提供。这个动作是怎么样的?在Asp.Net MVC控制器中反序列化JSON对象

喜欢的东西...

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

有没有在我失踪框架一个很好的帮助的静态类?或者我必须创建一个DataContract?

非常感谢

回答

21

System.Web.Script.Serialization.JavaScriptSerializer

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

编辑:哎呀...只注意到你正在传递一个对象,而不是字符串....所以你需要使用System.Runtime.Serialization.Json.DataContractJsonSerializer

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

不错,谢谢(可能yeeess也许我有点懒惰rtfm ;-)) – 2010-06-01 17:36:23

+0

很高兴我能帮上忙! – 2010-06-01 17:42:55

+2

+1 for update;) – 2012-08-30 15:34:15