如何通过 JSON 在本地存储中存储包含数组对象的对象

How to store an Object containing Array-Objects in local Storage By JSON

本文关键字:存储 对象 包含 数组 何通过 JSON      更新时间:2023-09-26

我有这个对象,几乎包含了我想知道的关于锻炼的任何信息。然而,当我字符串化对象时,数组对象不会存储或其他东西。

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

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?

这些是我的字符串化和读取方法:

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));    
}

更改对象,如下所示,然后字符串化。它应该有效。

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

这里的点是正常的JavaScript数组旨在保存带有数字索引的数据。您可以将命名键填充到它们上,但JSON数组数据类型不能在数组上具有命名键。