2

我创建了一个 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

4 回答 4

12

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

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

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"}
于 2015-09-23T14:49:36.200 回答
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.
于 2015-09-23T14:49:54.170 回答
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);
于 2015-09-23T14:51:20.053 回答
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);

于 2015-09-23T14:56:08.867 回答