14

好的,所以我有这个 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 是这样的:

会话存储

  • ListaPermessi = " [对象对象],[对象对象],[对象对象],[对象对象],[对象对象] "

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

4

1 回答 1

29

您需要将其转回 JSON 字符串。您可以使用以下JSON.stringify方法做到这一点:

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

这样做的原因是 Web 存储只能存储字符串,并且返回的默认toString方法Object,如您现在所见,“[object Object]”。


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

if (typeof Storage !== "undefined") { //...
于 2012-09-24T10:06:36.713 回答