2017-07-18 675 views
0

我想在Cookie中存储JSON对象。由于版本0的Cookie值在允许的字符中受到限制,因此它只允许url安全字符。这就是为什么我用UTF-8编码它的原因。编码之后,JSON字符被改变。在Cookie中存储JSON对象

Cookie cookie = new Cookie("res", URLEncoder.encode(res, "UTF-8")); 
    cookie.setComment("comment"); 
    cookie.setMaxAge(24*60*60); 
    cookie.setPath("/t/res"); 
    response.addCookie(cookie); 

JSON:

{ 
"evt": [{ 
    "id": "2", 
    "qty": "2" 
}, { 
    "id": "3", 
    "qty": "7" 
}], 
"exc": [{ 
    "id": "2", 
    "qty": "3" 
}, { 
    "id": "1", 
    "qty": "6" 
}], 
"qt": "15", 
"ti": "067e61623b6f4ae2a1712470b63dff00", 
"rm": { 
    "aci": "6", 
    "rt": "5" 
    } 
} 

这是它是如何在饼干所示:

%7B%22evt%22%3A%5B%5D%2C%22exc%22%3A%5B%5D%2C%22qt%22%3A%221%22%2C%22ti%22%3A%22067e61623b6f4ae2a1712470b63dff00%22%2C%22rm%22%3A%7B%22aci%22%3A%226%22%2C%22rt%22%3A%225%22%7D%7D 

我解析它在JS JSON.parse(jsn),我得到一个错误Unexpected token o in JSON at position 1

上午我错过了什么或者我究竟可以解析它?

回答

0

也许使用JSON.stringify(res)来制作你的对象,这对编码/解码我想存储的东西时总是很安全,而不是在这里使用你的URLEncoder。

+0

它只是返回'{}' –

+0

参考下面的回答,认为你可能需要做的你正在做什么,但首先解码该网址,然后JSON.parse它 –

0

在对uri进行编码之后,您还需要在解析之前解码它。
var x = java.net.URLDecoder.decode(jsn,“UTF-8”);
使用JSON.parse(X),而不是单独的JSON.parse如果 这不回答看看这个
Decode UTF-8 with Javascript

+0

我得到了一个错误'位置6的JSON中的意外的令牌%' –

+0

与上面一起使用encodeURI(res),而不是URLEncoder.encode(res,“ UTF-8“) –

+0

我是否需要在java代码中将'URLEncoder.encode(res,”UTF-8“)'更改为'encodeURI(res)'?我不明白。 –