在LocalStorage中存储用户定义的JavaScript对象,并将其作为用户定义的对象类型检索

在LocalStorage中存储用户定义的JavaScript对象,并将其作为用户定义的对象类型检索,javascript,json,Javascript,Json,我一直在开发一个涉及本地存储的应用程序。我有一个decktype对象数组。卡片组对象本身包含卡片类型对象。因此,在了解了如何使用localstorage存储对象后,我发现了这篇文章: 据我所知,localstorage仅将数据存储为字符串,因此我的数据组对象需要使用JSON.stringify转换为字符串 但是,当我使用JSON.parse从localstorage检索对象时,我得到的对象不是我原来的用户定义类型,即deck类型 我的问题是:有没有办法从localstorage中检索我的对象作

我一直在开发一个涉及本地存储的应用程序。我有一个
deck
type对象数组。卡片组对象本身包含
卡片
类型对象。因此,在了解了如何使用localstorage存储对象后,我发现了这篇文章:

据我所知,localstorage仅将数据存储为字符串,因此我的数据组对象需要使用
JSON.stringify
转换为字符串

但是,当我使用
JSON.parse
从localstorage检索对象时,我得到的对象不是我原来的用户定义类型,即
deck
类型

我的问题是:有没有办法从localstorage中检索我的对象作为其原始类型(deck类型)的对象?提前感谢您的帮助

您可以使用可选选项转换它们:

var json = '{"decks": [{"cards":[{"id": 1},{"id": 2},{"id": 3}],"id":3},{"cards":[{"id": 4},{"id": 5},{"id": 6}],"id":4}]}';

function Deck( cards, id ) {
    this.cards = cards;
    this.id = id;
}

function Card(id) {
    this.id = id;
}

var decks = JSON.parse(json, function(key, value ) {

    if( key === "decks" ) {
        return value.map( function(deck) {
            return new Deck( deck.cards, deck.id );
        });
    }
    else if( key === "cards" ) {
        return value.map( function( card ) {
            return new Card( card.id );
        });
    }
    else {
        return value;
    }
}).decks;
然后做:

console.log( decks ) 
提供以下信息: