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は次のようになります。

sessionStorage

  • ListaPermessi = " [オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト] "

オブジェクトの配列をjavascriptからsessionStorage変数に割り当てる適切な方法は何ですか?

4

1 に答える 1

29

それをJSON文字列に戻す必要があります。次の方法でそれを行うことができますJSON.stringify

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

この理由は、Webストレージは文字列のみを格納でき、これまで見てきたように、デフォルトtoStringの戻りメソッドObject「[objectObject]」であるためです。


補足:typeofこれは演算子であり、関数ではないため、括弧は必要ありません。

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