存储和检索cookie中的json对象

ric*_*lla 6 javascript cookies json

我试图将json对象存储在cookie中,但我遇到了一些问题.我可以像这样创建我的对象:

product = {
   "name" : "prodname",
   "quantity" : 4
}
Run Code Online (Sandbox Code Playgroud)

我然后将此对象保存在我的cookie中.随着更多产品的添加(它是购物篮),我通过将新对象附加到cookie字符串的末尾来添加更多字符串(所以我基​​本上有很多小的单独对象).我很难将对象从cookie字符串中取出.双方$.parseJSONeval当我尝试读取对象从cookie回失败.任何帮助,将不胜感激.

Mat*_*hen 9

应该是这样的:

{"products": [
    {
       "name" : "prodname",
       "quantity" : 4
    },
    {
       "name" : "prodname2",
       "quantity" : 3
    }
]}
Run Code Online (Sandbox Code Playgroud)

所述[]表示的阵列.如果要添加其他产品,请从cookie加载,更新阵列,然后再次保存.如果你愿意,你可以跳过外部对象,让cookie只是数组.

编辑:说cookieStr是你的cookie.

var root = $.parseJSON(cookieStr);
root.products.push(newProduct);
cookieStr = JSON.stringify(root);
Run Code Online (Sandbox Code Playgroud)


Eya*_* Ch 6

将从JSON.stringify(cookieStr)返回的值保存到cookie不是一个好习惯.它可能导致某些浏览器出现错误.

在使用它之前你应该将它转换为base64(使用btoa),并在读取它时,从base64转换(使用atob)

val = JSON.stringify(cookieStr)
val = btoa(val)

write_cookie(val)
Run Code Online (Sandbox Code Playgroud)