无法从JavaScript对象获取值

时间:2015-09-23 14:44:39

标签: javascript html5 sessionstorage

我创建了一个JSON对象并将其放在会话对象下。

如何从JSON中检索值?

这是我的程序

var datainsession = {"firstName":"John", "lastName":"Doe"};

var keyname = 'test';

window.sessionStorage.setItem(keyname + '', datainsession);

var val_sess = window.sessionStorage.getItem(keyname);

var firstname = val_sess.firstName;

alert(firstname);

http://jsfiddle.net/5bea0mr2/3/

你能告诉我如何找回名字吗?

4 个答案:

答案 0 :(得分:12)

会话存储只能包含字符串,而不能包含对象。您的会话最终将您的对象转换为字符串("[Object object]"),而不是对象本身。

为了解决这个问题,我们可以先使用JSON.stringify()将对象转换为JSON字符串:

window.sessionStorage.setItem(keyname + '', JSON.stringify(datainsession));
-> '{"firstName":"John","lastName":"Doe"}'

然后拉动时,使用JSON.parse()

将其转换回对象
var val_sess = JSON.parse(window.sessionStorage.getItem(keyname));
-> {"firstName":"John","lastName":"Doe"}

答案 1 :(得分:5)

window.sessionStorage.setItem只能存储序列化对象。

所以你必须先通过JSON.stringify序列化它:

window.sessionStorage.setItem(keyname, JSON.stringify(datainsession))

然后通过JSON.parse检索它:

var val_sess = window.sessionStorage.getItem(keyname);
var obj = JSON.parse(val_sess);
// obj.firstName is what you need.

答案 2 :(得分:4)

JSON由字符串表示,而不是对象。它只是一个带有字符串键的JavaScript对象。您需要使用JSON.stringify()JSON.parse()来转换JavaScript对象。

尝试以下方法:

var datainsession = {
  firstName: "John",
  lastName: "Doe"
};

var keyname = 'test';

window.sessionStorage.setItem(keyname, JSON.stringify(datainsession));

var val_sess = JSON.parse(window.sessionStorage.getItem(keyname));

var firstname = val_sess.firstName;

alert(firstname);

答案 3 :(得分:2)

您需要在设置时将其转换为字符串,并在解决时将其解析。此方法仅存储字符串,但JSON方法可以绕过它。例如

var datainsession = {"firstName":"John", "lastName":"Doe"};

var keyname = 'test';

 window.sessionStorage.setItem(keyname + '', JSON.stringify(datainsession));

 var val_sess = window.sessionStorage.getItem('test');

var obj = JSON.parse(val_sess).firstName;

警报(OBJ);