0

如何在 JavaScript Cookie 中存储对象/数组?我试过那个简单的代码

var item = { 
    price: 200,   
    company: 'Microsoft',   
    quantity: 500,
    code: 'm33'
}

console.log(item);
Cookies.set('item', item);
console.log(Cookies.get('item'));

它显示了第一条控制台消息中的所有值,但在第二条消息中只给出了“[object Object]”。看起来 js-cookie 无法正确处理对象。有什么办法可以解决吗?

4

3 回答 3

1

您正在存储一个对象,并且 cookie 只允许使用文本。请记住,cookie 的最大长度为 4 KB,因此您不能在此处存储大量信息(localStorage改为使用)。

要解决这个问题,您必须先将 json 字符串化:

Cookies.set('item', JSON.stringify(item));

您将存储一个字符串化对象。要访问它,您必须解析字符串:

console.log(JSON.parse(Cookie.get('item')));
于 2016-03-07T14:05:29.827 回答
-1

在 cookie 中,您只能存储字符串。因此,为了首先存储对象,您将对象转换为字符串。这里使用这个插件是一个例子:

var people = [
    {"id": 123, "name": "Mazahir Eyvazli"},
    {"id": 128, "name": "Mayki Nayki"},
    {"id": 131, "name": "Mike Shinoda"}
];
$.cookie("people", JSON.stringify(people));

如果您想通过 cookie 将您的人员作为对象访问

// $.cookie("people") will return people object as an string
// therefore we parse it to JSON object
var people = $.parseJSON($.cookie("people"));
// now we can access our object
people[0]["id"] // --> 123
people[1]["name"] // --> Mayki Nayki
于 2016-03-07T14:10:17.097 回答
-1

只需使用:

Cookies.getJSON('item')

从 2.0.0 版本开始,js-cookie 已内置支持 JSON 解析,无需更改设置方式。有关更多信息,请参阅https://github.com/js-cookie/js-cookie/tree/v2.1.0#json

于 2016-03-08T01:15:49.570 回答