在HTML5存储中存储JSON数组无法正常工作

man*_*ish 4 javascript html5 json session-storage

这是我的HTML代码,这里我将json数组存储在localstorage中.我希望以后随时迭代json,但它显示未定义.如何使用js迭代存储的json数组?

<!DOCTYPE html>
<html>
<head>
<script>
var ob=[
   {
     "id":1,
     "name":"one"
   },
   {
     "id":2,
     "name":"two"
   }
];
function clickCounter() {alert("dsdsd");
    if(typeof(Storage) !== "undefined") {
        if (sessionStorage.ob) {
            sessionStorage.ob = ob;
        } else {
            sessionStorage.ob = undefined;
        }

        alert(sessionStorage.ob[0].id);
        for (var i in sessionStorage.ob)
        {
           alert(sessionStorage.ob[i].id);
        }    

    } else {

    }
}
</script>
</head>
<body>
<button onclick="clickCounter()" type="button">Click me!</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Utk*_*nos 6

localStorage和cookies一样,用于存储字符串.如果您尝试将复杂对象存储在存储中,则首先将其强制转换为其字符串表示形式.

因此,在保存它时需要进行字符串化,并在稍后尝试迭代时将其解析回复杂对象.

保存:

var obj = {foo: 'bar'};
localStorage.setItem('obj', JSON.stringify(obj)); //<-- saved as JSON string
Run Code Online (Sandbox Code Playgroud)

稍后阅读:

var obj = JSON.parse(localStorage.getItem('obj'));
for (var i in obj) {
    alert(i+' = '+obj[i]); //<-- "foo = bar"
}
Run Code Online (Sandbox Code Playgroud)