在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 )
提供以下信息: