在 localStorage 中存储对象

我有一个这样的数组:

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

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

[object, object]

我怎样才能解决这个问题?

Config.ts

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;
}


}
126208 次浏览

本地存储仅限于处理字符串键/值对,您可以像下面这样使用 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));

使用 LocalDataStorage 本地数据存储很容易在本地存储中存储对象,在这里您可以透明地设置/获取以下任何“类型”: Array、 Boolean、 Date、 Float、 Integer、 Null、 Object 或 String。

[免责声明]我是实用程序[/免责声明]的作者

例子:

localDataStorage.set( 'key1', 'Belgian' )
localDataStorage.set( 'key2', 1200.0047 )
localDataStorage.set( 'key3', true )
localDataStorage.set( 'key4', { 'RSK' : [1,'3',5,'7',9] } )
localDataStorage.set( 'key5', null )


localDataStorage.get( 'key1' )   -->   'Belgian'
localDataStorage.get( 'key2' )   -->   1200.0047
localDataStorage.get( 'key3' )   -->   true
localDataStorage.get( 'key4' )   -->   Object {RSK: Array(5)}
localDataStorage.get( 'key5' )   -->   null

正如你所看到的,基本值是被尊重的,现在,在你的例子中,我们这样做:

>localDataStorage.set( 'testObject', { name : 'test', time : new Date( '2017-02-03T08:38:04.449Z' ) } )

请注意,您可以直接表示该对象。(所有的字符串都是在后台为您完成的。)当我们取回密钥时,我们得到:

>localDataStorage.get( 'testObject' ) -->
>Object {name: "test", time: "2017-02-03T08:38:04.449Z"}

现在回答有点晚了,但是我想回答,直到未来的观众可以使用它,javascript 通过引用使用对象,然后当我们存储一个对象到 localStorage,在现实中我们存储的是对象的地址,而不是对象的内容! 然后,如果我们想要存储对象内容(绝对想要) ,我们应该这样做:

像这样的商店:

localStorage.setItem('my_item', JSON.stringify(my_object));

像这样使用:

var my_object = JSON.parse(localStorage.getItem('my_item'));

希望能帮上忙:)

如果没有 绳子格式,就不能存储某些内容。

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

这就是为什么您应该将数据转换为字符串,不管它是 数组还是 反对

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

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

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

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