设定对象的数组来的sessionStorage(Setting an array of object

2019-07-31 20:18发布

好了,我有这样的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 :(
    }
}

但是...这是不正常! 分配后,从萤火虫看到的sessionStorage看起来是这样的:

sessionStorage的

  • ListaPermessi = “[对象的对象],[对象的对象],[对象的对象],[对象的对象],[对象的对象]”

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

Answer 1:

你需要把它放回JSON字符串。 你可以做到这一点与JSON.stringify方法:

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

这样做的原因是,网络存储只能存储字符串,而默认toString方法Object的回报,因为你已经看到,“[对象的对象]”。


附注: typeof是运营商,而不是一个功能,所以没有必要括号:

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


文章来源: Setting an array of objects to sessionStorage