欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中Cookie之存儲(chǔ)對(duì)象

 更新時(shí)間:2015年07月21日 10:14:19   投稿:hebedich  
這篇文章主要介紹了在項(xiàng)目中,需要將用戶的信息存到Cookie中,但是cookie只能保存字符串,所以需要先序列號(hào),然后在存儲(chǔ)在cookie中,有需要的朋友可以借鑒下

本文通過(guò)代碼詳細(xì)給大家做講解,具體內(nèi)容如下:

做項(xiàng)目過(guò)程中,用戶登陸之后,需要將用戶的信息存到Cookie中,但因?yàn)镃ookie中只能存儲(chǔ)字符串,所以想到了先把用戶實(shí)體序列化成Json串,存儲(chǔ)在Cookie中,用到的時(shí)候再拿出來(lái)反序列化。

道理很簡(jiǎn)單,網(wǎng)上的例子也很多,但還是遇到一些小困難。下面與大家分享成果。(我的開發(fā)環(huán)境為VS2012,.net framework版本為4.0,)

C#中Json與對(duì)象之間的互相轉(zhuǎn)換

下載并引用Newtonsoft.Json.dll

定義一個(gè)簡(jiǎn)單的用戶實(shí)體:

public class UserInfo
{
 /// <summary>
 /// 用戶名稱
 /// </summary>
 public string UserName { get; set; }
 /// <summary>
 /// 用戶密碼
 /// </summary>
 public string UserPwd { get; set; }
 /// <summary>
 /// 用戶級(jí)別
 /// </summary>
 public string UserLevel { get; set; }
}


將對(duì)象序列化成Json串:

 /// <summary>
 /// 將對(duì)象序列化成Json
 /// </summary>
 /// <param name="obj">需要序列化的對(duì)象</param>
 /// <returns>序列化后的字符串</returns>
 public static string ObjectToJson(object obj)
 {
 return Newtonsoft.Json.JsonConvert.SerializeObject(obj);
 }


將Json串反序列化成對(duì)象:

/// <summary>
/// 從Json字符串反序列化為對(duì)象
/// </summary>
/// <param name="jsonString">Json字符串</param>
/// <param name="obj">要生成的對(duì)象類型</param>
/// <returns>反序列化后的對(duì)象</returns>
public static object JsonToObject(string jsonString)
{
 return Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(jsonString);
}


Cookie的使用

將實(shí)體序列化為Json并存入Cookie中:

//獲取UserInfo對(duì)象

UserInfo enUser=new UserInfo()
{
 UserName="Danny",
 UserPwd="123456",
 UserLevel="admin"
}

//創(chuàng)建Cookie對(duì)象
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);

//設(shè)置cookie保存時(shí)間
userInfo.Expires = DateTime.Now.AddMinutes(20);
從Cookie中讀取出Json串并反序列化成實(shí)體

//取出Cookie對(duì)象
HttpCookie userInfoCookie = System.Web.HttpContext.Current.Request.Cookies.Get("userInfo");

//從Cookie對(duì)象中取出Json串
string strUserInfo = HttpUtility.UrlDecode(userInfoCookie.Value, Encoding.GetEncoding("UTF-8"));

//Json串反序列化為實(shí)體
UserInfoViewModel userInfo = JsonToObject(strUserInfo) as UserInfoViewModel;
說(shuō)明:實(shí)體的屬性值有中文時(shí),序列化的字符串存儲(chǔ)到Cookie中時(shí)會(huì)產(chǎn)生亂碼,為了防止產(chǎn)生亂碼,我們?cè)诖嫒隒ookie之前先用UrlEncode()和UrlDecode()對(duì)Json串進(jìn)行編碼與解碼。

而且,一般的瀏覽器支持的Cookie存儲(chǔ)的容量為4k(差也就差一兩個(gè)字節(jié)),足夠存儲(chǔ)一個(gè)經(jīng)過(guò)序列化的對(duì)象了。

本文到此為止,希望大家喜歡。

相關(guān)文章

最新評(píng)論