我想将 JSON 数组保存为 cookie 的形式。例如,数组如下所示。[{"name":"Push_up", "values":{"times":35, "date":"Jan 1", "sec":3}}, {"name":"Pull_up", "values":{"times":20, "date":"Mar 4", "sec":6}}]这是一个用于存储cookie的函数。function setCookie(name, value, exp=1){ var date = new Date(); date.setTime(date.getTime() + exp*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + date.toUTCString() + ';path=/'; console.log(name + '=' + value + ';expires=' + date.toUTCString() + ';path=/');}我尝试使用 Array.toString 并将其保存为 cookie,但它没有正确字符串化,因此 cookie 未成功保存。我怎么解决这个问题?
2 回答
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
要序列化 JSON,您应该使用JSON.stringify
.
但对于一般情况,您还希望转义 cookie 中具有特殊含义的字符,例如=
,因此使用escape
:
document.cookie = escape(JSON.stringify(value));
但是,更好的是 - 服务器真的需要这些信息,还是只与客户端相关?如果它只与客户端相关,那么有一个更好的解决方案,那就是使用本地存储,例如:
localStorage.exerciseInfo = JSON.stringify(arrOfExercises);
并检索它
const arrOfExercises = JSON.parse(localStorage.exerciseInfo || '[]');
最好仅当存在客户端和服务器都需要能够持久读取的信息(例如会话或登录凭据)时才使用 cookie。
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
var a = [{"name":"Push_up", "values":{"times":35, "date":"Jan 1", "sec":3}},
{"name":"Pull_up", "values":{"times":20, "date":"Mar 4", "sec":6}}];
JSON.stringify(a);
"[{"name":"Push_up","values":{"times":35,"date":"Jan 1","sec":3}},
{"name":"Pull_up","values":{"times":20,"date":"Mar 4","sec":6}}]"
添加回答
举报
0/150
提交
取消