Eu tenho um objeto json que é retornado por uma solicitação AJAX e estou tendo alguns problemas com o .length
porque ele continua retornando undefined
. Apenas querendo saber se estou usando certo:
console.log(data.length);
console.log(data.phones.length);
Os dois retornam undefined
mesmo sendo objetos válidos.
Atualização:
Amostra do objeto JSON retornada:
{"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}}
javascript
json
nkcmr
fonte
fonte
Respostas:
Você pode usar algo como isto
fonte
Seu problema é que o objeto phone não possui uma propriedade length (a menos que você a defina em algum lugar no JSON que você retorna), pois os objetos não são os mesmos que os arrays, mesmo quando usados como arrays associativos. Se o objeto telefones fosse uma matriz, ele teria um comprimento. Você tem duas opções (talvez mais).
Altere sua estrutura JSON (assumindo que isso seja possível) para que 'phones' se torne
(observe que não há identificador numerado por palavra para cada telefone, pois eles são retornados em uma matriz indexada em 0). Nesta resposta
phones.length
será válida.Itere os objetos contidos no objeto do telefone e conte-os à medida que avança, por exemplo
Se você estiver segmentando apenas novos navegadores, a opção 2 poderá ter esta aparência
fonte
Considere usar underscore.js . Isso permitirá que você verifique o tamanho, ou seja, assim:
fonte
você não precisa alterar seu formato JSON.
substituir:
com:
fonte
fonte
tente isso
fonte
use este
ou
fonte
fonte
TechnologyId
propriedade