2012-04-27 184 views
2

我具有以下遍历JSON对象

var s = { 
    "TenantGroupName": "Fun Holidays", 
    "queue_details": [{ 
     "queue_key": "1", 
     "channelId": "1", 
     "queue_name": "North India Travel", 
     "contacts": [{ 
      "from": "[email protected]", 
      "subject": "Redemption Coupon", 
      "queue_time": "2:34", 
      "service_level_breached": "false", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }, { 
      "from": "[email protected]", 
      "subject": "Redemption Coupon", 
      "queue_time": "2:34", 
      "service_level_breached": "false", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }, { 
      "from": "[email protected]", 
      "subject": "Redemption Coupon", 
      "queue_time": "2:34", 
      "service_level_breached": "false", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }, { 
      "from": "[email protected]", 
      "subject": "Redemption Coupon", 
      "queue_time": "8:05", 
      "service_level_breached": "true", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }, { 
      "from": "[email protected]", 
      "subject": "Redemption Coupon", 
      "queue_time": "8:34", 
      "service_level_breached": "true", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }] 
    }, { 
     "queue_key": "1", 
     "channelId": "1", 
     "queue_name": "South India Travel", 
     "contacts": [] 
    }, { 
     "queue_key": "1", 
     "channelId": "1", 
     "queue_name": "Summer 2012", 
     "contacts": [{ 
      "from": "[email protected]", 
      "subject": "Redemption Coupon", 
      "queue_time": "2:34", 
      "service_level_breached": "false", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }, { 
      "from": "[email protected]", 
      "subject": "Redemption Coupon", 
      "queue_time": "2:34", 
      "service_level_breached": "false", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }, { 
      "from": "[email protected]", 
      "subject": "Redemption Coupon", 
      "queue_time": "2:34", 
      "service_level_breached": "false", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }, { 
      "from": "[email protected]", 
      "subject": "Redemption Coupon", 
      "queue_time": "9:34", 
      "service_level_breached": "true", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }] 
    }, { 
     "queue_key": "1", 
     "channelId": "3", 
     "queue_name": "Honeymoon", 
     "contacts": [{ 
      "from": "Henry Williams", 
      "subject": "New Zealand", 
      "queue_time": "1:45", 
      "service_level_breached": "false", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }, { 
      "from": "Linda Simpson", 
      "subject": "Redemption Coupon", 
      "queue_time": "2:34", 
      "service_level_breached": "false", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }] 
    }, { 
     "queue_key": "1", 
     "channelId": "7", 
     "queue_name": "Feedback_SMS", 
     "contacts": [{ 
      "from": "@sanjeev", 
      "subject": "Maldives", 
      "queue_time": "1:45", 
      "service_level_breached": "false", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }] 
    }, { 
     "queue_key": "1", 
     "channelId": "5", 
     "queue_name": "Feedback_Twitter", 
     "contacts": [{ 
      "from": "9833202859", 
      "subject": "Wish to travel ...", 
      "queue_time": "1:45", 
      "service_level_breached": "false", 
      "cduId": "4f8b9f2322c60106c0a800bd65cc0000", 
      "contactPkey": "8903" 
     }] 
    }] 
} 

我通过上述JSON数组要循环JSON对象。我已经写在Javascript

我通过上面的JSON对象到JavaScript以下如下

function CreateQueue(jString) { 
    var jSonString = { "MyQueue": jString }; 
    alert(jSonString.MyQueue.length); 
} 

上述功能警报:undefined。我如何循环通过上面的JSON字符串?

+0

你确定你有一个字符串,而不是一个对象?尝试在javascript控制台中输入'alert(typeof myjsonstring)' – phantasm 2012-04-27 14:51:39

回答

1

上面的对象是......嗯,一个对象,而不是一个数组。唯一的阵列是s.queue_details。你可以通过它这样做是为了循环:

for (var i = 0; i < s["queue_details"].length; i++) 
{ 
    var item = s["queue_details"][i]; 
    //do stuff with item 
} 
0

只使用数组的length财产,你不能得到一个对象的长度。您可以使用for (x in y)自行循环对象。

9

这整个构造是一个对象,而不是一个数组,所以你不能调用.length就可以了。另外我不明白你为什么把它包装成一个额外的对象,这是绝对没有用的。

要循环对象的所有属性,请执行下列操作:

for (var key in jString) { 
    if (jString.hasOwnProperty(key)){ 
     console.log("key:"+key+", val:"+jString[key]); 
    } 
} 

遍历数组,请执行以下操作:

for (var i = 0; i < s.queue_details.length; i++){ 
    console.log(i+":"+s.queue_details[i]); 
} 
5

最简单的我发现使用JSON的工作方式而客户端的XML解析/迭代就是在脚本中包含jQuery。

我已经为您创建了一个小例子,演示了循环遍历第一个队列的联系人条目并为每个条目生成格式化链接输出。

jsFiddle JSON/jQuery example.

本质硬字是照顾有
$.each(json, function (index, item) { /*...*/ });