2012-04-27 2 views
2

Я следующий объект JSONПетля через объект 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 массива. Я написал следующее в Javascript

Я прошел выше объект JSON в JavaScript, следующим

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

Вышеуказанные функции предупреждения: undefined. Как я могу пройти через строку JSON?

+0

вы уверены, что у вас есть строка, а не объект? попробуйте ввести 'alert (typeof myjsonstring)' в консоли javascript – phantasm

ответ

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) { /*...*/ });

Смежные вопросы