1

私はローカルストレージを含むアプリケーションに取り組んできました。deck型オブジェクトの配列があります。デッキ オブジェクト自体にはcardタイプ オブジェクトが含まれます。そのため、localstorage を使用してオブジェクトを保存する方法を調べたところ、次の SO 投稿に出くわしました。

オブジェクトを HTML5 localStorage に保存する

私が理解していることから、localstorage はデータを文字列としてのみ保存するため、デッキ オブジェクトは を使用して文字列に変換する必要がありますJSON.stringify

しかし、を使用して localstorage からオブジェクトを取得するJSON.parseと、元のユーザー定義型ではない、つまり型のオブジェクトが取得されますdeck

私の質問はそうです: localstorage からオブジェクトを元のタイプ (デッキタイプ) のオブジェクトとして取得する方法はありますか? よろしくお願いします。

4

1 に答える 1

2

オプションのreviver 引数を使用して、それらを変換できます。

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 ) 

以下を与える:

ここに画像の説明を入力

于 2012-08-05T12:06:37.313 に答える