ASP.NET MVC 序列化與反序列化
- 2010-03-12
- 15780
- 0
寫了 MVC 應該很容易遇到需要使用 JSON 的時候,ASP.NET MVC 支援多種 ActionResult 其中一種就是 Json ,demo 今天遇到一個需求,我必須將一個複雜型別 List<Dictionary<string, MyClass>> 序列化後存放於 DB 供需要時取用,原本很直覺的想說那我就序列化為 XML 存放,但程式寫完執行卻得到了黃紅畫面的朝弄,我竟然忘記了實作 IDictionary 介面的類別 (例如 Hashtable) 並不能序列化為 XML。
山不轉路轉....我想到了常用的 JSON 格式也相當適合來做這份工作,不過我是要存到 db 不能要我把它 return 出去阿,因此利用 Reflector 工具反查了一下它是如何序列化成 json 格式的,一看真是不錯,利用 JavaScriptSerializer 類別一行解決,我們來看看 Code 。
string SerializerData = ((JavaScriptSerializer)new JavaScriptSerializer()).Serialize(myData);
就這樣一行,得到了我所需要的效果,反序列化當然也是很容易
var SerializerData = ((JavaScriptSerializer)new JavaScriptSerializer()).Deserialize<List<Dictionary<string, MyClass>>>(json);
簡單的解決需求,實在是相當的過癮
不過這個 JavaScriptSerializer 類別 可不是 ASP.NET MVC 專屬的,早在微軟提供了 AJAX.NET 的時候就有提供這個序列化 json 的類別了,在 Jeff 大的 CallBack PageCommand 與 JSON 序列化 文章中有提到有興趣的可以拜讀一下
回應討論