我是JS的新手,在询问我搜索过这个问题之前,但仍未找到答案。在LocalStorage中,我只有一个键定义如下:
key={
-prob1: string
-prob2: Object
-prob21:string
-prob22:string
}
如何将key
与prob2
结构相同的对象存储在obj
中,让我们称之为localStorage.setItem('key.prob2', obj);
,是这样的吗? {{1}}这是合法的吗?
任何想法?谢谢
答案 0 :(得分: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')));
答案 1 :(得分: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);