Обработка массива в json
Есть ответ от сервера (переменная r ниже):
VK.Api._callbacks[3704529]({"response":[{"account_id":160_еще_цифры,"account_status":1,"access_role":"admin"}]}); Есть функция, которая обрабатывает ответ от сервера: function doAfterGetAccounts(r){ if(r.error) alert("Ошибка получения списка аккаунтов"); if(r.response){ var s = ""; s += "lenght: " + r.response.lenght + "\n"; var accounts = new Array(); for(var i = 0; i < r.response.lenght; i++){ s += i + " loop\n"; accounts[i] = new Account(r.response[i].account_id, r.response[i].account_status, r.response[i].access_role); } alert(s); } } Искал в интернете, ни где нормального разъяснения не нашел. Вопрос: почему на строчку r.response.lenght выдается ответ undefined, и, следовательно, цикл ни разу не обрабатывает массив? Как с этим бороться, чтобы получить массив элементов (в моем случае массив, содержащие один элемент, но может быть и большее количество элементов, количество которых заранее не известно)? Мои комментарии: Я так понимаю, что новая версия JavaScript сама распарсивает JSON. Поэтому, если обращаться через r.response[0].account_id программы выдает адекватный ответ. А вот как работать с любым количеством элементов - я пока не знаю. Разве что можно попробовать конструкцию try/catch, но она не лучший выход. Заранее благодарен. |
Могу только предположить, что r.response - это не массив, а объект. Тогда можно поступить следующим образом
for( var i = 0, account; (account = r.response[i]); i++ ) { accounts[i] = new Account( account.account_id, account.account.status, account.access_role ); } |
Спасибо за избавление от мучений непонимания.
|
Часовой пояс GMT +3, время: 00:15. |