栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#中Cookie之存储对象

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#中Cookie之存储对象

本文通过代码详细给大家做讲解,具体内容如下:

做项目过程中,用户登陆之后,需要将用户的信息存到cookie中,但因为cookie中只能存储字符串,所以想到了先把用户实体序列化成Json串,存储在cookie中,用到的时候再拿出来反序列化。

道理很简单,网上的例子也很多,但还是遇到一些小困难。下面与大家分享成果。(我的开发环境为VS2012,.net framework版本为4.0,)

C#中Json与对象之间的互相转换

下载并引用Newtonsoft.Json.dll

定义一个简单的用户实体:

public class UserInfo
{
 /// 
 /// 用户名称
 /// 
 public string UserName { get; set; }
 /// 
 /// 用户密码
 /// 
 public string UserPwd { get; set; }
 /// 
 /// 用户级别
 /// 
 public string UserLevel { get; set; }
}


将对象序列化成Json串:

 /// 
 /// 将对象序列化成Json
 /// 
 /// 需要序列化的对象
 /// 序列化后的字符串
 public static string ObjectToJson(object obj)
 {
 return Newtonsoft.Json.JsonConvert.SerializeObject(obj);
 }


将Json串反序列化成对象:

/// 
/// 从Json字符串反序列化为对象
/// 
/// Json字符串
/// 要生成的对象类型
/// 反序列化后的对象
public static object JsonToObject(string jsonString)
{
 return Newtonsoft.Json.JsonConvert.DeserializeObject(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(差也就差一两个字节),足够存储一个经过序列化的对象了。

本文到此为止,希望大家喜欢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/124925.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号