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

某些表演

要序列化 ​​JSON,您应该使用JSON.stringify.

但是对于一般情况,您还需要转义 cookie 中具有特殊含义的字符,例如=,因此请使用escape

document.cookie = escape(JSON.stringify(value));

但是,更好的是 - 服务器真的需要这些信息,还是只与客户端有关?如果它只与客户端相关,则有一个更好的解决方案,即使用本地存储,例如:

localStorage.exerciseInfo = JSON.stringify(arrOfExercises);

并检索它

const arrOfExercises = JSON.parse(localStorage.exerciseInfo || '[]');

最好仅在客户端和服务器都需要能够持久读取的信息(例如会话或登录凭据)时使用 cookie

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章