最 近項目開始比較多的使用JSON來傳遞數據了,首先介紹下什么是JSON吧,JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。易於人閱讀和編寫,同時也易於機器解析和生成。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON采用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。
在ASP.NET AJAX中,客戶端的序列化與反序列能力由Sys.Serialization.JavaScriptSerializer類的serialize和 deserialize兩個靜態方法提供。在服務器端,所有的序列化與反序列化能力,包括類型之間的轉換,對於開發人員來說都是由 JavaScriptSerializer類的幾個方法實現的。
在JavaScriptSerializer中,我們可以看到下面可以使用的方法或者構造函數,它們都是實例方法:
Member | Description |
---|---|
JavaScriptSerializer() | 構造函數,用於創建一個新的JavaScriptSerializer對象,不指定JavaScriptTypeResolver |
JavaScriptSerializer(JavaScriptTypeResolver) | 構造函數,用於創建一個新的JavaScriptSerializer對象,並使用指定的JavaScriptTypeResolver來映射特定類型與標識字符串。 |
ConvertToType<T>(Object) | 將給定對象轉化成類型T。 |
Deserialize<T>(String) | 將JSON字符串轉化為類型T。 |
DeserializeObject(String) | 將JSON字符串轉化為一個對象。 |
MaxJsonLength | 獲取或者設置序列化時能夠接受的JSON字符串的最大長度。 |
RecursionLimit | 獲取或者設置在反序列化JSON字符串時遞歸的最大深度。 |
RegisterConverters(IEnumerable<JavaScriptConverter>) | 注冊序列化過程中使用的JavaScriptConveter對象。 |
Serialize(Object) | 將一個對象序列化成JSON字符串。 |
Serialize(Object, StringBuilder) | 將一個對象序列化到一個StringBuilder中。 |
這里我只提供一個簡單的demo看看效果,后面我再陸續介紹吧,首先創建一個用戶實體類:
public class UserInfo {
public Int32 Id { get; set; }
public String UserName { get; set; }
public DateTime Time { get; set; }
public bool Gender { get; set; } }
接下來在Page_Load里面寫下面代碼。
protected void Page_Load(object sender, EventArgs e)
{
UserInfo info = new UserInfo();
info.Id = 1;
info.UserName = "貓博 http://maoblog.com";
info.Time = DateTime.Now;
info.Gender = true;
System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
String strJson = jss.Serialize(info);
Response.Write(strJson);
//輸出結果:
//{"Id":1,"UserName":"貓博 http://maoblog.com","Time":"\/Date(1297950721668\/","Gender":true}
UserInfo info2 = jss.Deserialize<UserInfo>(strJson);
Response.Write(String.Format("<br/>{0}<br/>{1}<br/>{2}<br/>{3}", info2.Id, info2.UserName, info2.Time, info2.Gender));
Response.End();
//結果: //1 //貓博 http://maoblog.com //2011/2/17 14:00:29 //True }