好的,所以我有这个
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]”
从javascript将一个对象数组分配给sessionStorage变量的正确方法是什么?
解决方法
您需要将其重新转换为JSON字符串.您可以使用
JSON.stringify
方法执行此操作:
sessionStorage.setItem("ListaPermessi",JSON.stringify(parsedResult.ListaPermessi));
原因是Web存储只能存储字符串,而Object的默认toString方法返回,如您所见,“[object Object]”.
旁注:typeof
是一个操作符,而不是一个函数,因此不需要括号:
if (typeof Storage !== "undefined") { //...