好的,我有这个JSON:
{"Status":"OK!","ListaPermessi":
[{"IdPermesso":10,"Nome":"WIND_PARAMS"},
{"IdPermesso":11,"Nome":"ADMIN_SERVER"},
{"IdPermesso":21,"Nome":"REC"},
{"IdPermesso":22,"Nome":"REC_DIST"},
{"IdPermesso":23,"Nome":"REC_DIST_CR"}
]}
我的代码是:
var parsedResult = JSON.parse(result); // where result is the above JSON
if (parsedResult.Status === "OK!") {
// Set sessionStorage vars
if (typeof(Storage) !== "undefined") {
// localStorage & sessionStorage support!
sessionStorage.setItem("ListaPermessi", parsedResult.ListaPermessi);
}
else {
// Sorry! No web storage support :(
}
}
但是......这不能正常工作!在分配之后,从Firebug看到的sessionStorage看起来像这样:
的sessionStorage :
从javascript为 sessionStorage 变量分配对象数组的正确方法是什么?
答案 0 :(得分:22)
您需要将其重新转换为JSON字符串。您可以使用JSON.stringify
方法执行此操作:
sessionStorage.setItem("ListaPermessi", JSON.stringify(parsedResult.ListaPermessi));
原因是网络存储只能存储字符串,toString
的默认Object
方法会返回,如您所见,“[object Object]”。
旁注:typeof
是一个运算符,而不是函数,因此不需要括号:
if (typeof Storage !== "undefined") { //...