2012-12-06 8 views
5

Ho un dizionario molto semplice.Come memorizzare un oggetto (dizionario) in localStorage JavaScript?

var meta = {'foo':'1','moo':'2'} 

Voglio conservare questo nella memoria locale e recuperarlo.

window.localStorage.setItem("meta", meta); 
var meta1 = window.localStorage.getItem("meta"); 
alert(meta1['foo']); 

Quanto sopra non funziona. Come posso farlo?

+0

Possibile duplicato di [Memorizzazione di oggetti in HTML5 localStorage] (http://stackoverflow.com/questions/2010892/storing-objects-in-html5-localstorage) –

risposta

18

localStorage converte è entrata in stringhe, in modo da avere per convertire gli oggetti in stringhe JSON, e ritorno:

window.localStorage.setItem("meta", JSON.stringify(meta)); 
var meta1 = JSON.parse(window.localStorage.getItem("meta")); 
alert(meta1['foo']); 

Il motivo per il codice non ha funzionato è perché l'impostazione di un oggetto in localStorage set il suo valore a "[object Object]" (object.toString() restituisce "[object Object]"):

window.localStorage.setItem("objectInput", {some:"object"}); 
var objectOutput = window.localStorage.getItem("objectInput"); 
alert(objectOutput); 
// This returns "[object Object]" 
+0

Grazie mille @Cerbrus !!! –

+0

Nessun problema! Si prega di considerare questa risposta come la risposta corretta ;-) – Cerbrus

+0

Sì, ho provato a farlo immediatamente ma non è possibile contrassegnare una risposta come giusta fino a 8 minuti sono finiti ... lo ha fatto ora –

0

è mig HT preferiscono con http://rhaboo.org:

var store = Rhaboo.persistent('Some name'); 
store.write('count', store.count ? store.count+1 : 1); 

store.write('somethingfancy', { 
    one: ['man', 'went'], 
    2: 'mow', 
    went: [ 2, { mow: ['a', 'meadow' ] }, {} ] 
}); 

store.somethingfancy.went[1].mow.write(1, 'lawn'); 
console.log(store.somethingfancy.went[1].mow[1]); //says lawn 

BTW, ho scritto rhaboo.