2012-12-06 9 views
5

Ich habe ein sehr einfaches Wörterbuch.Wie speichert man ein (Wörterbuch-) Objekt in JavaScript localStorage?

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

Ich möchte dies im lokalen Speicher speichern und abrufen.

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

Das obige funktioniert nicht. Wie kann ich es tun?

+0

Mögliches Duplikat von [Objekte in HTML5 localStorage speichern] (http://stackoverflow.com/questions/2010892/storing-objects-in-html5-localstorage) –

Antwort

18

localStorage wandelt es Eingang in Strings, so dass Sie Ihre Objekte zu JSON-Strings konvertieren müssen, und zurück:

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

Der Grund Code hat nicht funktioniert, weil ist die Einrichtung eines Objekts in localStorage setzt es Wert "[object Object]" (object.toString() kehrt "[object Object]"):

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

Vielen Dank @Cerbrus !!! –

+0

Kein Problem! Bitte erwäge, diese Antwort als richtige Antwort zu markieren ;-) – Cerbrus

+0

Ja, ich habe es sofort versucht, aber du kannst eine Antwort nicht als richtig markieren, bis 8 Minuten vorbei sind ... hab es jetzt getan –

0

Sie mig ht bevorzugen es mit 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, ich schrieb rhaboo.

Verwandte Themen