如何将Javascript数组字符串化以存储在localStorage中

时间:2012-08-10 01:57:55

标签: javascript json local-storage

我正在尝试将数组存储在localStorage(HTML5)中,该数组需要是一个字符串,但是通过定义索引,可以直接访问我存储在数组中的对象。当我尝试JSON.stringify时,我只得到[],它不会在localStorage中存储对象数组。

var mylist = [];

mylist["mykey1"] = {id: "1", title: "First"};
mylist["mykey2"] = {id: "2", title: "Second"};

localStorage.setItem("mylist", JSON.stringify(mylist));  // stores [] only - uggh!

var mylist2 = JSON.parse(localStorage.getItem("mylist"));

document.write(JSON.stringify(mylist2["mykey1"])); // want it to display:  {"id": "1", "title": "First"}

3 个答案:

答案 0 :(得分:1)

我想我只是通过将mylist var从[]数组更改为{} object来解决它。

var mylist = {};

答案 1 :(得分:1)

您已经创建了数组,并且您尝试使用它像关联数组地图

当您输入

时,实际发生的是什么
mylist["mykey1"] = {id: "1", title: "First"}

它试图在索引“mykey1”中获取列表元素,其中被JSON解析器忽略。这可能是因为它无法确定mykey1列表中的整数索引,或者它转换为数字太大。

你会注意到,如果你这样做:

mylist[1] = {id: "1", title: "First"}

您的JSON字符串将为"[null,{id: "1", title: "First"}]",因为您尚未指定0th index元素,但您已设置1st index元素。

答案 2 :(得分:0)

因为您正在使用数组作为普通对象。

var mylist = [];更改为var mylist = {};,然后就可以了。

Check the demo