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

 aamjlft 发布于 2023-02-06 18:15

在服务器上我将一个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 个回答
  • 逗号是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中 允许的字符

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

    2023-02-06 18:17 回答
  • \054打破了你的json.它是一个编码,(逗号).

    这个:

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

    应该这样做.

    2023-02-06 18:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有