Obtenir la taille de l'objet json

J'ai un objet json qui est retourné par une requête AJAX et j'ai des problèmes avec la .length car il continue de revenir undefined . Je me demande si je l'utilise bien:

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

Ils sont tous deux retournés undefined même s'ils sont des objets valides.

Mettre à jour:
Exemple de l'objet JSON renvoyé:

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

Vous pouvez utiliser quelque chose comme ça

 <script type="text/javascript"> var myObject = {'name':'Kasun', 'address':'columbo','age': '29'} var count = Object.keys(myObject).length; console.log(count); </script> 

Votre problème est que l'objet de votre téléphone n'a pas de propriété de longueur (à moins que vous ne le définissiez quelque part dans le JSON que vous renvoyez) car les objets ne sont pas identiques aux tableaux, même s'ils sont utilisés comme tableaux associatifs. Si l'objet des téléphones était un tableau, il aurait une longueur. Vous avez deux options (peut-être plus).

1) Changez votre structure JSON (en supposant que cela soit possible) afin que les «téléphones» deviennent

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

(Notez qu'il n'y a pas d'identifiant numéro-mot pour chaque téléphone car ils sont retournés dans un tableau indexé 0). Dans cette réponse, la phones.length sera valide.

2) Iteratez les objets contenus dans l'objet de votre téléphone et comptez-les au fur et à mesure, par exemple

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

Si vous ne ciblez que les nouveaux navigateurs, l'option 2 pourrait ressembler à ceci

Envisager d'utiliser underscore.js . Cela vous permettra de vérifier la taille, c'est-à-dire comme ça:

 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 

Vous n'avez pas besoin de modifier votre format JSON.

remplacer:

 console.log(data.phones.length); 

avec:

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

Utilisez celui-ci

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

ou

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