如何将包含Array-Objects的Object存储在本地Storage By JSON中

时间:2013-09-17 18:41:29

标签: javascript arrays local-storage multidimensional-array stringify

我有这个对象包含我想知道的关于锻炼的任何事情。然而,当我对对象进行String化时,数据对象没有被存储或者什么。

这是我想要字符串化的对象:

Object {name: "testWorkout", program: Array[4]}
name: "testWorkout"
program: Array[4]
        first: Array[3]
        slope: 0
        speed: "medium"
        time: 10
        length: 3
        __proto__: Array[0]

        interval1: Array[4]
        radio: "Time"
        size: "33"
        slope: "79"
        speed: "fast"
        length: 4
        __proto__: Array[0]

        interval2: Array[4]
        radio: "Time"
        size: "3322"
        slope: "16"
        speed: "medium"
        length: 4
        __proto__: Array[0]

        last: Array[3]
        slope: 0
        speed: "medium"
        time: 20
        length: 3

    __proto__: Array[0]
    length: 4
    __proto__: Array[0]
__proto__: Object

但相反它字符串化很好,它确实字符串化为:

{"name":"testesr","program":[null,null,null,null]} 

如何用纯JavaScript解决这个问题?那么没有JQuery?

这些是我的stringify和read方法:

function putInLocalStorage(){
    console.log(JSON.stringify(workout));
    localStorage.setItem('workout-'+workout.name, JSON.stringify(workout));
}

function readLocalStorage(){
    var retrievedObject = localStorage.getItem('workout-'+workout.name);
    console.log('retrievedObject: ', JSON.parse(retrievedObject));    
}

1 个答案:

答案 0 :(得分:0)

更改您的对象,如下所示stringify。它应该工作。

Object {name: "testWorkout", program: {}}

这里指的是普通JavaScript数组用于保存带有数字索引的数据。您可以将命名键填充到它们上,但JSON数组数据类型不能在数组上使用命名键。