在服务器上我将一个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等我对想法开放
提前致谢.
逗号是Cookie中的非法字符...并且不是唯一的一个,为了防止问题,也许你可以编码你的JSON befoure放入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中"允许的字符"的世界:cookie中 允许的字符
:)我希望它可以帮助...
这\054
打破了你的json.它是一个编码,
(逗号).
这个:
string.replace(/\\054/g, ',');
应该这样做.