程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .Net中Json相關套件的限制

.Net中Json相關套件的限制

編輯:關於.NET

Json.Net 無法序列基本型別(string, int),Asp.Net Ajax 無法正確序列日期,AjaxPro序列出我不想要的_type字串

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

string test = Newtonsoft.Json.JavaScriptConvert.SerializeObject("Hello World");

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

2. Asp.Net Ajax 也內建了一組 Json 序列與反序列的函式庫,只要有裝 Asp.Net Ajax,他會在 namespace System.Web.Script.Serialization,只要加入參考 System.Web.Extensions,就可以用下面的方式使用。

string str = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(new Store());

Store store = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Store>(str);

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

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

{"__type":"TestPage_JQuery_TestJSONPage+Store, App_Web_tnrikb42, Version=0.0.0.0, 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 you'd like to get the correct type instead of only getting the properties defined in the common abstract class

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved