国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中Cookie之存儲對象

2019-10-29 21:40:33
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了在項目中,需要將用戶的信息存到Cookie中,但是cookie只能保存字符串,所以需要先序列號,然后在存儲在cookie中,有需要的朋友可以借鑒下

本文通過代碼詳細給大家做講解,具體內容如下:

做項目過程中,用戶登陸之后,需要將用戶的信息存到Cookie中,但因為Cookie中只能存儲字符串,所以想到了先把用戶實體序列化成Json串,存儲在Cookie中,用到的時候再拿出來反序列化。

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

C#中Json與對象之間的互相轉換

下載并引用Newtonsoft.Json.dll

定義一個簡單的用戶實體:

 

 
  1. public class UserInfo 
  2. /// <summary> 
  3. /// 用戶名稱 
  4. /// </summary> 
  5. public string UserName { get; set; } 
  6. /// <summary> 
  7. /// 用戶密碼 
  8. /// </summary> 
  9. public string UserPwd { get; set; } 
  10. /// <summary> 
  11. /// 用戶級別 
  12. /// </summary> 
  13. public string UserLevel { get; set; } 

將對象序列化成Json串:

 

 
  1. /// <summary> 
  2. /// 將對象序列化成Json 
  3. /// </summary> 
  4. /// <param name="obj">需要序列化的對象</param> 
  5. /// <returns>序列化后的字符串</returns> 
  6. public static string ObjectToJson(object obj) 
  7. return Newtonsoft.Json.JsonConvert.SerializeObject(obj); 

將Json串反序列化成對象:

 

 
  1. /// <summary> 
  2. /// 從Json字符串反序列化為對象 
  3. /// </summary> 
  4. /// <param name="jsonString">Json字符串</param> 
  5. /// <param name="obj">要生成的對象類型</param> 
  6. /// <returns>反序列化后的對象</returns> 
  7. public static object JsonToObject(string jsonString) 
  8. return Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(jsonString); 

Cookie的使用

將實體序列化為Json并存入Cookie中:

//獲取UserInfo對象

 

 
  1. UserInfo enUser=new UserInfo() 
  2. UserName="Danny"
  3. UserPwd="123456"
  4. 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(差也就差一兩個字節),足夠存儲一個經過序列化的對象了。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜都市| 吴川市| 哈巴河县| 全州县| 宁化县| 寻乌县| 隆林| 卫辉市| 丽水市| 福清市| 资讯 | 南皮县| 辰溪县| 杭锦旗| 巴楚县| 德江县| 康乐县| 蓬溪县| 荆门市| 荣昌县| 社旗县| 大英县| 沂南县| 信宜市| 临潭县| 浦江县| 三河市| 霍林郭勒市| 个旧市| 永吉县| 梅州市| 巴楚县| 天等县| 剑河县| 都江堰市| 兴化市| 荆州市| 兴文县| 岐山县| 汝南县| 安康市|