Javascript:解析document.cookie JSON对象的问题

时间:2014-01-03 15:46:01

标签: javascript django json cookies

在服务器上我将JSON对象存储为cookie(使用Django / json.dumps),它看起来像这样:

'{"name": "Simon", "gender": "M"}'

在我运行document.cookie的客户端上,我可以看到cookie,它看起来像这样:

"user="{\"name\": \"Simon\"\054 \"gender\": \"M\"}";

我有一个小函数,它按名称检索cookie(getCookie('user')),它返回一个字符串:

"{\"name\": \"Simon\"\054 \"gender\": \"M\"}"

我想将其解析回JSON对象以便在客户端上进一步使用,但是JSON.parse()会返回错误:“SyntaxError:Unexpected number”。

如果你运行以下内容会有多奇怪:

JSON.parse("{\"name\": \"Simon\"\054 \"gender\": \"M\"}") 

直接在控制台中工作正常。有什么想法吗?

如果有更好的方式来存储cookie等,我可以接受想法

提前致谢。

2 个答案:

答案 0 :(得分:8)

\054打破你的json。它是一个编码的,(逗号)。

此:

string.replace(/\\054/g, ',');

应该这样做。

答案 1 :(得分:7)

逗号是Cookie中的非法字符...并且不是唯一一个,因为防止问题,也许你可以将你的JSON编码放入cookie:

encodeURIComponent('{"name": "Simon", "gender": "M"}');
//return "%7B%22name%22%3A%20%22Simon%22%2C%20%22gender%22%3A%20%22M%22%7D"

decodeURIComponent('%7B%22name%22%3A%20%22Simon%22%2C%20%22gender%22%3A%20%22M%22%7D');
//return '{"name": "Simon", "gender": "M"}'

这个答案更好地解释了cookie中“允许角色”的世界: Allowed characters in cookies

:)我希望它可以帮助...