我有一个这样的数组:
[{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;
}
}
答案 0 :(得分:47)
本地存储仅限于处理您可以执行的字符串键/值对,使用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));
答案 1 :(得分:4)
回答有点晚了,但是我想回答,直到将来的观众可以使用它,javascript通过引用使用对象,然后当我们将对象存储到localStorage时,实际上我们存储的是对象的地址,而不是内容对象! 然后,如果我们要存储对象内容(绝对是我们想要的),则应执行以下操作:
像这样存储:
s
并像这样使用:
localStorage.setItem('my_item', JSON.stringify(my_object));
希望对您有所帮助:)
答案 2 :(得分:1)
本地存储只能处理字符串键/值对。如果要存储json对象,请使用.time {
padding: 15px;
display: inline-flex;
box-shadow: 0px 0px 10px #3279e3;
}
.period {
font-size: 10px;
}
.hour {
ont-size: 10px;
}
,而从本地存储中获取值时,请使用JSON.stringify()
要存储的对象示例:
JSON.parse()
存储方式:
var storeObject={name:"TestDate", time:"Date 2020-01-21T08:38:04.449Z"};
获取方式:
localStorage.setItem('storeObject', JSON.stringify(storeObject));
答案 3 :(得分:1)
没有 String 格式,您将无法存储某些内容。
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'));
答案 4 :(得分:0)
使用localDataStorage可以很容易地将对象存储在本地存储中,您可以在其中透明地设置/获取以下任何“类型”:Array,Boolean,Date,Float,Integer,Null,Object或String。 / p>
[免责声明]我是该实用程序的作者[/ DISCLAIMER]
示例:
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"}