у меня есть объект json, который возвращается по запросу AJAX, и у меня возникают некоторые проблемы с ним, .length
потому что он продолжает возвращаться undefined
. Просто интересно, правильно ли я это использую:
console.log(data.length);
console.log(data.phones.length);
Они оба возвращаются, undefined
даже если они являются действительными объектами.
Обновление:
образец возвращенного объекта JSON:
{"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}}
javascript
json
nkcmr
источник
источник
Ответы:
Вы можете использовать что-то вроде этого
источник
Ваша проблема в том, что ваш телефонный объект не имеет свойства длины (если вы не определите его где-то в возвращаемом вами JSON), поскольку объекты не совпадают с массивами, даже если они используются в качестве ассоциативных массивов. Если бы объект телефонов был массивом, он имел бы длину. У вас есть два варианта (возможно, больше).
Измените структуру JSON (при условии, что это возможно), чтобы «телефоны» стали
(обратите внимание, что для каждого телефона нет нумерованного идентификатора, поскольку они возвращаются в 0-индексированном массиве). В этом ответ
phones.length
будет действительным.Перебирайте объекты, содержащиеся в объекте вашего телефона, и считайте их по мере необходимости, например:
Если вы ориентируетесь только на новые браузеры, вариант 2 может выглядеть следующим образом
источник
Подумайте об использовании underscore.js . Это позволит вам проверить размер, например, так:
источник
Вам не нужно менять формат JSON.
заменить:
с участием:
источник
источник
попробуй это
источник
использовать этот
или
источник
источник
TechnologyId
свойство