将JSON结果分解为Localstorage键/值对

时间:2013-12-05 20:31:52

标签: javascript jquery json local-storage

我有一个有效的JSON结果:

{
"metadata": [
    {
        "name": "md1",
        "value": "blah1"
    },
    {
        "name": "md2",
        "value": "blah2"
    },
    {
        "name": "tee2",
        "value": "blah3"
    }
],
"subdata1": [
    {
        "name": "sd1_1",
        "value": "blah1_1"
    },
    {
        "name": "sd1_2",
        "value": "blah1_2"
    },
    {
        "name": "sd1_3",
        "value": "blah1_3"
    },
    {
        "name": "sd1_4",
        "value": "blah1_1"
    }
],
"subdata2": [
    {
        "name": "sd2_1",
        "value": "blah2_1"
    },
    {
        "name": "sd2_2",
        "value": "blah2_2"
    },
    {
        "name": "sd2_3",
        "value": "blah2_3"
    }
]

}

通过成功的jQuery .ajax()调用进入:

$.ajax({
           url: 'test.json',
           type: 'get',
           datatype: 'json',
           processData: false,
           success: function(data) { //do something...};

将整个结果blob到与整体键相关联的值中相对容易:

localStorage.setItem('newtest', data);

这会将我的JSON响应的全部内容保存为一个名为“newtest”的键的值。但是假设我希望每个数组的描述符作为键名,关联数组作为值?在我的示例中,这将给出三个键/值对,每个数组分别保存为与名为“metadata”,“subdata1”和“subdata2”的键相关联的单独字符串值。我做了大量的搜索,但没有找到正确的方法。我们将非常感谢您对解决方案的任何帮助 - 感谢您的关注和帮助。

1 个答案:

答案 0 :(得分:1)

您可以执行for循环并对对象进行字符串化。

$.ajax({
    url: 'test.json',
    type: 'get',
    datatype: 'json',
    processData: false,
    success: function(data) {
        for(var key in data){
            localStorage.setItem(key, JSON.stringify(data[key]));
        }
    }
});

然后在你拿到它们时解析

JSON.parse(localStorage.getItem("metadata"));