C#使用JavaScriptSerializer類實現序列化與反序列化得到JSON
JavaScriptSerializer類由非同步通訊層內部使用,用於序列化和反序列化在瀏覽器和Web伺服器之間傳遞的資料。
1、新增引用
專案新增:System.Web.Extensions.dll的引用;
程式碼新增:using System.Web.Script.Serialization的引用;
2、屬性和方法介紹
2.1 屬性
MaxJsonLength: 獲取或設定JavaScriptSerializer類接受的JSON字串的最大長度。
RecursionLimit:獲取或設定用於約束要處理的物件級別的數目的限制。
2.2 方法
JavaScriptSerializer():建構函式,用於建立一個新的JavaScriptSerializer物件,不指定JavaScriptTypeResolver
JavaScriptSerializer(JavaScriptTypeResolver):建構函式,用於建立一個新的JavaScriptSerializer物件,並使用指定的JavaScriptTypeResolver來對映特定型別與標識字串。
ConvertToType<T>(Object):將給定物件轉化成型別T。
Deserialize<T>(String):將JSON字串轉化為型別T。
DeserializeObject(String):將JSON字串轉化為一個物件。
RegisterConverters(IEnumerable<JavaScriptConverter>):註冊序列化過程中使用的JavaScriptConveter物件。
Serialize(Object):將一個物件序列化成JSON字串。
Serialize(Object, StringBuilder):將一個物件序列化到一個StringBuilder中。
3、使用
例項:獲取使用者列表,將列表實現序列化與反序列化。
//建立使用者列表 List<UserInfo> userList = new List<UserInfo>(); userList.Add(new UserInfo() { ID = 1, Name = "張三", CreateTime = DateTime.Now }); userList.Add(new UserInfo() { ID = 2, Name = "李四", CreateTime = DateTime.Now }); userList.Add(new UserInfo() { ID = 2, Name = "王五" }); //建立一個JavaScriptSerializer物件 JavaScriptSerializer serializer = new JavaScriptSerializer(); //將使用者列表序列化成JSON string serializedResult = serializer.Serialize(userList); //將JOSN反序列化成使用者列表 List<UserInfo> deserializeResult = serializer.Deserialize<List<UserInfo>>(serializedResult);
其它程式碼:
/// <summary> /// 使用者資訊類 /// </summary> public class UserInfo { /// <summary> /// 編號 /// </summary> public int ID { get; set; } /// <summary> /// 名稱 /// </summary> public string Name { get; set; } /// <summary> /// 建立時間 /// </summary> public DateTime? CreateTime { get; set; } }