在Cookie中存储JSON对象

时间:2017-07-18 15:11:31

标签: javascript java json cookies

我想在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

我错过了什么或者我究竟能解析它吗?

2 个答案:

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