C#中Cookie之存储对象

C#中Cookie之存储对象,第1张

概述本文通过代码详细给大家做讲解,具体内容如下:做项目过程中,用户登陆之后,需要将用户的信息存到Cookie中,但因为Cookie中只能存储字符串,所以想到了先把用户实体序列化成Json串,存储在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(差也就差一两个字节),足够存储一个经过序列化的对象了。

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

总结

以上是内存溢出为你收集整理的C#中Cookie之存储对象全部内容,希望文章能够帮你解决C#中Cookie之存储对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1254819.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存