2017-08-17 65 views
4

我是JS的新手,在问我搜索这个问题之前,仍然没有找到答案。在localStorage的我只有一个键定义如下:如何使用LocalStorage在JavaScript中将对象存储在对象中?

key={ 
    -prob1: string 
    -prob2: Object 
     -prob21:string 
     -prob22:string 
} 

我怎样才能在key存储相同的结构prob2的给定对象,让我们把它叫做obj,是这样吗? localStorage.setItem('key.prob2', obj);这是合法的吗? ?

任何想法谢谢

回答

4

不能存储使用localStorage对象 - 你只能存储在那里的字符串。

你可以做的是将你的对象转换为字符串(使用JSON.stringify),然后保存它。

obj = { 
    a: { 
    b: 'c' 
    } 
} 

localStorage.setItem('myobj', JSON.stringify(obj)); 

console.log(localStorage.getItem('myobj')); 
console.log(JSON.parse(localStorage.getItem('myobj'))); 

https://jsfiddle.net/or91wp56/

+0

谢谢你的回答,但我想OBJ存储在MyObj中一个属性,而不是MyObj中本身 – user8244016

+1

您可以随时阅读该obj,在其中一个属性中插入新对象,然后将其保存回localStorage – Dekel

+0

我认为这很容易,我一直在尝试几个小时,没有什么解决它,你怎么做? – user8244016

1

所有你会存储与localStorage.setItem('key.prob2', obj)[object Object],因为它只能存储字符串,这可能不是你所期待的。我通常使用小包装类各地localStorage自动序列化/反序列化,是这样的:

class Storage { 
    static set(key, value) { 
     let serialized = value; 
     if (typeof value !== 'string') { 
     serialized = JSON.stringify(serialized); 
     } 
     localStorage.setItem(key, serialized); 
    } 
    static get(key) { 
     try { 
     return JSON.parse(localStorage.getItem(key)); 
     } catch (e) { 
     return localStorage.getItem(key); 
     } 
    } 
} 

Storage.set('foo', { bar: 'baz' }); 
console.log(Storage.get('foo').bar); 
相关问题