我想在Cookie中存储JSON对象。由于版本0 cookie值在允许的字符中是限制性的,因此它只允许url安全字符。这就是我用UTF-8编码的原因。对其进行编码后,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"
}
}
这是在cookie中显示的方式:
%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 :(得分:0)
或许使用JSON.stringify(res)来制作你的对象,在编码/解码我想要存储的东西时,这对我来说似乎总是很安全,而不是在这里使用你的URLEncoder。
答案 1 :(得分:0)
在对uri进行编码之后,您还需要在解析之前对其进行解码
var x = java.net.URLDecoder.decode(jsn," UTF-8");
单独使用JSON.parse(x)而不是JSON.parse
如果这不是回答,请看这个
Decode UTF-8 with Javascript