ottenere la dimensione dell’object JSON

Ho un object JSON che viene restituito da una richiesta AJAX e sto avendo qualche problema con il .length perché continua a tornare undefined . Mi chiedo solo se lo sto usando bene:

 console.log(data.length); console.log(data.phones.length); 

Entrambi restituiscono undefined anche se sono oggetti validi.

Aggiornare:
Campione dell’object JSON restituito:

 {"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}} 

Puoi usare qualcosa come questo

  

Il tuo problema è che il tuo object telefoni non ha una proprietà length (a meno che tu non lo definisca da qualche parte nel JSON che torni) poiché gli oggetti non sono gli stessi degli array, anche se usati come array associativi. Se l’object telefoni fosse un array, avrebbe una lunghezza. Hai due opzioni (forse più).

1) Cambia la tua struttura JSON (supponendo che sia ansible) così che i “telefoni” diventino

 "phones":[{"number":"XXXXXXXXXX","type":"mobile"},{"number":"XXXXXXXXXX","type":"mobile"}] 

(nota che non esiste un identificatore numerato a parola per ogni telefono dato che vengono restituiti in un array con indice 0). In questa risposta, phones.length sarà valida.

2) Scorrere gli oggetti contenuti nell’object del telefono e contarli mentre si va, ad es

 var key, count = 0; for(key in data.phones) { if(data.phones.hasOwnProperty(key)) { count++; } } 

Se hai scelto come target solo i nuovi browser, l’opzione 2 potrebbe essere simile a questa

Potresti utilizzare underscore.js . Ti permetterà di controllare la dimensione cioè in questo modo:

 var data = {one : 1, two : 2, three : 3}; _.size(data); //=> 3 _.keys(data); //=> ["one", "two", "three"] _.keys(data).length; //=> 3 
 var json=[{"id":"431","code":"0.85.PSFR01215","price":"2457.77","volume":"23.0","total":"565.29"},{"id":"430","code":"0.85.PSFR00608","price":"1752.45","volume":"4.0","total":"70.1"},{"id":"429","code":"0.84.SMAB00060","price":"4147.5","volume":"2.0","total":"82.95"},{"id":"428","code":"0.84.SMAB00050","price":"4077.5","volume":"3.0","total":"122.32"}] var obj = JSON.parse(json); var length = Object.keys(obj).length; //you get length json result 4 

non è necessario modificare il formato JSON.

sostituire:

 console.log(data.phones.length); 

con:

 console.log( Object.keys( data.phones ).length ) ; 

usa questo

 //for getting length of object int length = jsonObject.length(); 

o

 //for getting length of array int length = jsonArray.length(); 
 $(document).ready(function () { $('#count_my_data').click(function () { var count = 0; while (true) { try { var v1 = mydata[count].TechnologyId.toString(); count = count + 1; } catch (e) { break; } } alert(count); }); });