将对象数组设置为sessionStorage

时间:2012-09-24 10:04:29

标签: javascript json session-storage

好的,我有这个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

  • ListaPermessi =“ [object Object],[object Object],[object Object],[object Object],[object Object]

从javascript为 sessionStorage 变量分配对象数组的正确方法是什么?

1 个答案:

答案 0 :(得分:22)

您需要将其重新转换为JSON字符串。您可以使用JSON.stringify方法执行此操作:

sessionStorage.setItem("ListaPermessi", JSON.stringify(parsedResult.ListaPermessi));

原因是网络存储只能存储字符串,toString的默认Object方法会返回,如您所见,“[object Object]”。


旁注:typeof是一个运算符,而不是函数,因此不需要括号:

if (typeof Storage !== "undefined") { //...