在 localStorage 中存储对象

新手上路,请多包涵

我有一个这样的数组:

 [{name:"test", time:"Date 2017-02-03T08:38:04.449Z"}]

我将它存储在 localstorage 中,当我从 localstorage 检索数据时,我得到了值:

 [object, object]

我该如何解决这个问题?

配置文件

import { Injectable } from "@angular/core";

@Injectable()
export class TokenManager {

  public tokenKey: string = 'app_token';

  constructor() { }

  store(content) {
    var contentData;

    console.log("inside localstorsge store:", content);
    contentData = content.map(
      (data) => data.name
    )
    console.log("contentData:", contentData)
    localStorage.setItem(this.tokenKey, content);
  }

  retrieve() {
    console.log("inside localstorage");
    let storedToken: any = localStorage.getItem(this.tokenKey);
    console.log("storedToken:", storedToken);//====> here this console is[object object]
    if (!storedToken) throw 'no token found';
    return storedToken;
  }

}

原文由 Khushi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

本地存储仅限于处理字符串键/值对,您可以使用 JSON.stringify 并在获取值时执行如下操作 --- JSON.parse

 var testObject ={name:"test", time:"Date 2017-02-03T08:38:04.449Z"};

将对象放入存储:

 localStorage.setItem('testObject', JSON.stringify(testObject));

从存储中检索对象:

 var retrievedObject = localStorage.getItem('testObject');

console.log('retrievedObject: ', JSON.parse(retrievedObject));

原文由 Curiousdev 发布,翻译遵循 CC BY-SA 4.0 许可协议

你不能存储没有 字符串 格式的东西。

LocalStorage 始终以字符串格式存储键和值。

这就是为什么您应该将数据转换为字符串,无论它是 Array 还是 Object

要将数据存储在 localStorage 中,首先使用 JSON.stringify() 方法对其进行字符串化。

 var myObj = [{name:"test", time:"Date 2017-02-03T08:38:04.449Z"}];
localStorage.setItem('item', JSON.stringify(myObj));

然后,当您要检索数据时,您需要再次将 String 解析为 Object。

 var getObj = JSON.parse(localStorage.getItem('item'));

原文由 Moshiur Rahman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题