将JSON对象存储在cookie中(使用JQuery)并在ASP.NET中读取和反序列化它们

时间:2017-05-03 07:57:13

标签: asp.net vb.net cookies jquery-cookie

我试图将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字符串,因此我无法反序列化。

以下是错误消息 enter image description here

那么如何正确反序列化cookie字符串呢?当存储到cookie中时,它看起来像字符串被编码。

2 个答案:

答案 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))