ASP.NET C#使用JavaScriptSerializer實現序列化與反序列化得到JSON


最 近項目開始比較多的使用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  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM