2012-12-06 24 views
5

Çok basit bir sözlüğüm var.JavaScript localStorage'da bir (sözlük) nesnesi nasıl saklanır?

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

Bunu yerel depolama biriminde saklamak ve geri almak istiyorum.

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

Yukarıdakiler işe yaramıyor. Nasıl yapabilirim?

+0

[HTML5 localStorage'da Nesnelerin Saklanması] 'nın olası kopyası (http://stackoverflow.com/questions/2010892/storing-objects-in-html5-localstorage) –

cevap

18

localStorage o dizeleri giriş var dönüştürür, böylece JSON dizeleri için nesneleri dönüştürmek zorunda ve destek vereceğini:

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

kodunuzu işe yaramadı sebebi, bir nesneyi ayarı

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

Çok teşekkürler @Cerbrus !!! –

+0

Sorun değil! Lütfen bu cevabı doğru cevap olarak işaretlemeyi düşünün ;-) – Cerbrus

+0

Evet Bunu hemen denedim ama 8 dakika geçene kadar bir cevabı doğru olarak işaretleyemezsin ... şimdi yaptı –

0

Sen mig: localStorage setleri bunun "[object Object]" (object.toString() getiri "[object Object]") için değer ht http://rhaboo.org ile tercih:

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, rhaboo yazdım.