将 JSON 数组字符串化

我想将 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 未成功保存。我怎么解决这个问题?


小唯快跑啊
浏览 131回答 2
2回答

摇曳的蔷薇

要序列化 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

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}}]"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript