如何使用LocalStorage在JavaScript中的对象对象中存储对象?

时间:2017-08-17 21:14:56

标签: javascript local-storage

我是JS的新手,在询问我搜索过这个问题之前,但仍未找到答案。在LocalStorage中,我只有一个键定义如下:

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

如何将keyprob2结构相同的对象存储在obj中,让我们称之为localStorage.setItem('key.prob2', obj);,是这样的吗? {{1}}这是合法的吗?

任何想法?谢谢

2 个答案:

答案 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')));

https://jsfiddle.net/or91wp56/

答案 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);