2012-04-27 186 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) { /*...*/ });