尝试将URL存储为JSON

时间:2012-08-15 12:55:38

标签: javascript json stringify

我正在尝试使用HTML5本地存储存储有关许多网站的一些细节,而且我遇到了一些问题。

基本上,我希望应用程序能够脱机缓存数据,以及我开发它的方式,每次加载主页面时,内容都缓存为localStorage.sitedata。我将它存储为JSON。

我为它编写的代码如下所示:

            // Retrieve response as JSON
            response = $.parseJSON(data);

            // Store the data in HTML5 local storage as well
            var dataToCacheArray = new Array();
            for(var item in response){
                var obj = response[item];
                dataToCacheArray.push(obj);
            }
            var dataToCache = JSON.stringify(dataToCacheArray);
            localStorage.sitedata = dataToCache;

现在,dataToCacheArray中的数据正是我想要的 - 它是一个包含许多JavaScript对象的数组。如果我使用console.log()来查看dataToCacheArray,那么就是其中之一,如Chrome的开发者工具所示:

lastChecked: "13:46:55 Wednesday 15 August 2012"
siteId: "34"
status: "1"
success: "1"
url: "http://localhost"

之后,我将dataToCacheArray的字符串化版本存储为dataToCache,如果我使用console.log()查看,我得到这个:

[{"status":"1","success":"1","siteId":"34","lastChecked":"13:46:55 Wednesday 15 August 2012"}]

如您所见,由于某种原因,URL未包含在字符串化版本中。知道我可能会出错的地方吗?

1 个答案:

答案 0 :(得分:2)

将URL设置为encodeURIComponent(url),以便在序列化为JSON之前在原始数据中正确转义。