熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

.Net 底下,Json 相關套件的限制

2013-11-13 10:57:42  來源: .NET編程 

  JsonNet 無法序列基本型別(string int)AspNet Ajax 無法正確序列日期AjaxPro序列出我不想要的_type字串

   JsonNet 是我最常使用的序列/反序列json套件標榜速度快對於一對多關系的object 也都能正常運作 己能滿足我平日的需要但前幾天突然有個情況我要序列的是一個泛型參數該參數不一定是物object型別有可能是string int datetimeJsonNet 卻給我錯誤訊息不讓我繼續下去

  string test = NewtonsoftJsonJavaScriptConvertSerializeObject(Hello World);

  出現錯誤: Token String in state Start would result in an invalid JavaScript object

   AspNet Ajax 也內建了一組 Json 序列與反序列的函式庫只要有裝 AspNet Ajax他會在 namespace SystemWebScriptSerialization只要加入參考 SystemWebExtensions就可以用下面的方式使用

  string str = new SystemWebScriptSerializationJavaScriptSerializer()Serialize(new Store());

  Store store = new SystemWebScriptSerializationJavaScriptSerializer()Deserialize<Store>(str);

  本來是想反正早晚會使用Net 會內建AspNet Ajax拿來用也順理成章可是測試了一下他的日期型態是序列成 /Date()/ 字串前端 javascript 拿到後並不能用datetime 來操作相對的 JsonNet是序列成new Date()

  AjaxProNet 一個輕量的 Ajax Framework 也提供了 Json 的序列/反序列功能沒有前面者的問題但他序列出的字串比較大多了一段__type的描述

  {__type:TestPage_JQuery_TestJSONPage+Store App_Web_tnrikb Version= Culture=neutral PublicKeyToken=null 他讓我產生出來的資料多了近一倍大據作者的說法這樣帶來的效益是可以讓使用 ArrayList的時候知道Object是什麽另外是用在有物件繼承關系時可以明確取得哪一層級的物件屬性原文如下:

  The __type property is used to allow to use the object in ArrayLists or any other object list The next thing is that if you are using different types that are inherited from a common interface youd like to get the correct type instead of only getting the properties defined in the common abstract class


From:http://tw.wingwit.com/Article/program/net/201311/14869.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.