C#中Cookie之存儲對象。本站提示廣大學習愛好者:(C#中Cookie之存儲對象)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中Cookie之存儲對象正文
本文經由過程代碼具體給年夜家做講授,詳細內容以下:
做項目進程中,用戶上岸以後,須要將用戶的信息存到Cookie中,但由於Cookie中只能存儲字符串,所以想到了先把用戶實體序列化成Json串,存儲在Cookie中,用到的時刻再拿出來反序列化。
事理很簡略,網上的例子也許多,但照樣碰到一些小艱苦。上面與年夜家分享結果。(我的開辟情況為VS2012,.net framework版本為4.0,)
C#中Json與對象之間的相互轉換
下載並援用Newtonsoft.Json.dll
界說一個簡略的用戶實體:
public class UserInfo { /// <summary> /// 用戶稱號 /// </summary> public string UserName { get; set; } /// <summary> /// 用戶暗碼 /// </summary> public string UserPwd { get; set; } /// <summary> /// 用戶級別 /// </summary> public string UserLevel { get; set; } }
將對象序列化成Json串:
/// <summary> /// 將對象序列化成Json /// </summary> /// <param name="obj">須要序列化的對象</param> /// <returns>序列化後的字符串</returns> public static string ObjectToJson(object obj) { return Newtonsoft.Json.JsonConvert.SerializeObject(obj); }
將Json串反序列化成對象:
/// <summary> /// 從Json字符串反序列化為對象 /// </summary> /// <param name="jsonString">Json字符串</param> /// <param name="obj">要生成的對象類型</param> /// <returns>反序列化後的對象</returns> public static object JsonToObject(string jsonString) { return Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(jsonString); }
Cookie的應用
將實體序列化為Json並存入Cookie中:
//獲得UserInfo對象
UserInfo enUser=new UserInfo() { UserName="Danny", UserPwd="123456", UserLevel="admin" }
//創立Cookie對象
HttpCookie userInfo = new HttpCookie("userInfo");
//將序列化以後的Json串以UTF-8編碼,再存入Cookie
userInfo.Value = HttpUtility.UrlEncode(ObjectToJson(enUser), Encoding.GetEncoding("UTF-8"));
//將cookie寫入到客戶端
System.Web.HttpContext.Current.Response.SetCookie(userInfo);
//設置cookie保留時光
userInfo.Expires = DateTime.Now.AddMinutes(20);
從Cookie中讀掏出Json串並反序列化成實體
//掏出Cookie對象
HttpCookie userInfoCookie = System.Web.HttpContext.Current.Request.Cookies.Get("userInfo");
//從Cookie對象中掏出Json串
string strUserInfo = HttpUtility.UrlDecode(userInfoCookie.Value, Encoding.GetEncoding("UTF-8"));
//Json串反序列化為實體
UserInfoViewModel userInfo = JsonToObject(strUserInfo) as UserInfoViewModel;
解釋:實體的屬性值有中文時,序列化的字符串存儲到Cookie中時會發生亂碼,為了避免發生亂碼,我們在存入Cookie之前先用UrlEncode()和UrlDecode()對Json串停止編碼與解碼。
並且,普通的閱讀器支撐的Cookie存儲的容量為4k(差也就差一兩個字節),足夠存儲一個經由序列化的對象了。
本文到此為止,願望年夜家愛好。