我试图将JSON对象存储在cookie中,并使用JQUERY Cookies库存储。所以这是我设置cookie的代码。
var batchParam={userid:10,username:"alex",batchid:20};
//So what I did is stringified the object and write it into cookies
Cookies.set("batchparam",JSON.stringify(batchParam);
在服务器端,我创建了用于反序列化上述结构的类
Public Class batchParam
Public userid, batchid As Integer
Public username As String
End Class
在页面加载中,我尝试使用以下代码反序列化。
Dim bpCookie As HttpCookie
Dim bp As New batchParam
bpCookie = Request.Cookies("batchParam")
Dim js As New JavaScriptSerializer
bp = js.Deserialize(Of batchParam)(bpCookie.Value.ToString)
但它没有显示为正确的字符串或JSON字符串,因此我无法反序列化。
那么如何正确反序列化cookie字符串呢?当存储到cookie中时,它看起来像字符串被编码。
答案 0 :(得分:0)
抱歉,我得到了解决方案。与那些遇到同样麻烦的人分享
首先我在设置cookie时删除了stringify。所以它不需要stringify并直接编写JSON对象。
Cookies.set( “batchparam”,batchParam);
然后在服务器端解码url
js.Deserialize(Of batchParam)(server.urldecode(bpCookie.Value))
它解决了这个问题,它完全从cookie中反序列化了JSON
答案 1 :(得分:0)
您需要对您的Cookie值进行URL解码:
bp = js.Deserialize(Of batchParam)(HttpUtility.UrlDecode(bpCookie.Value.ToString, Encoding.UTF8))