1. 程式人生 > >C#使用JavaScriptSerializer類實現序列化與反序列化得到JSON

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; }
}