Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从JavaScript对象获取值_Javascript_Html_Sessionstorage - Fatal编程技术网

无法从JavaScript对象获取值

无法从JavaScript对象获取值,javascript,html,sessionstorage,Javascript,Html,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 fi

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


您能告诉我如何检索名字吗?

会话存储只能保存字符串,不能保存对象。这里的会话最终保存的对象转换为字符串(
“[object object]”
),而不是对象本身

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

然后,当拉动它时,使用
JSON.parse()
将其转换回一个对象:


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

因此,您必须首先通过JSON.stringify将其序列化:

window.sessionStorage.setItem(keyname + '', JSON.stringify(datainsession));
-> '{"firstName":"John","lastName":"Doe"}'
window.sessionStorage.setItem(keyname, JSON.stringify(datainsession))
然后通过
JSON.parse
检索:

var val_sess = JSON.parse(window.sessionStorage.getItem(keyname));
-> {"firstName":"John","lastName":"Doe"}
var val_sess = window.sessionStorage.getItem(keyname);
var obj = JSON.parse(val_sess);
// obj.firstName is what you need.

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

您需要在设置时将其转换为字符串,并在取出时对其进行解析。这个方法只存储一个字符串,但是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)

它不是json对象,而是整个对象。