循环遍历从cookie返回的JSON对象

时间:2014-07-14 15:19:31

标签: javascript jquery arrays json cookies

我知道有很多关于这方面的问题,但我已经尝试了几种不同的建议解决方案并为每种解决方案获得相同的结果。

我将复选框值以格式timeArr = [ event-name-one: 0: 1404915600, 1: 1404917400 ]存储在数组中。当使用新的键/值对更新数组时,会更新cookie,将数组存储为JSON对象。

我使用jQuery.cookie('day', JSON.stringify(timeArr), {expires: 7});将JSON对象存储在cookie中,该对象以下列格式存储数组(从console.log();返回):

{"event-name-one":{"0":1405346400,"1":1405347600},"event-name-two":{"0":1405357200,"1":1405358400}}

在这种情况下,event-name-oneevent-name-two是复选框的ID。我需要遍历返回的cookie值(JSON对象)并检查在返回的cookie中找到ID的复选框。

我尝试过几个不同的循环,即for(var k in cookieValue){}jQuery.each(jQuery.parseJSON(cookieValue), function(i, v) {});没有运气。

for(var k in cookieValue)循环分别返回对象的每个字母,jQuery.each()循环返回此错误:Cannot use 'in' operator to search for '76' in ...

如何将此JSON字符串转换回数组,以便我可以遍历它并获取“键”

1 个答案:

答案 0 :(得分:0)

jQuery.cookie()必须自动将数组串行化为JSON对象,因为为了从循环中获得正确的结果,我必须在响应上使用jQuery.parseJSON()两次。

示例:

var cookieVal = jQuery.cookie('day_planner');
jQuery.each(jQuery.parseJSON(jQuery.parseJSON(cookieVal)), function(i, v) { 
    console.log(i, v); 
});

此循环返回event-name-one Object {0: "1405346400", 1: "1405347600"}