d'obtenir la taille de l'objet json
j'ai un objet json qui est retourné par une requête AJAX et j'ai quelques problèmes avec le .length
parce qu'il continue à retourner undefined
. Je me demande juste si je l'utilise correctement:
console.log(data.length);
console.log(data.phones.length);
ils retournent tous les deux undefined
même s'ils sont des objets valides.
mise à jour:
Échantillon de l'objet JSON retourné:
{"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}}
7 réponses
vous pouvez utiliser quelque chose comme ceci
<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 votre objet phones n'a pas de propriété de longueur (sauf si vous le définissez quelque part dans le JSON que vous retournez) car les objets ne sont pas les mêmes que les tableaux, même lorsqu'ils sont utilisés comme tableaux associatifs. Si les téléphones objet était un tableau, il aurait une longueur. Vous avez deux options (peut-être plus).
1) Changez votre structure JSON (en supposant que cela est possible) de sorte que les "téléphones" deviennent
"phones":[{"number":"XXXXXXXXXX","type":"mobile"},{"number":"XXXXXXXXXX","type":"mobile"}]
(notez qu'il n'y a pas de mot-numéroté identifiant pour chaque téléphone, car ils sont retournés dans un 0-tableau indexé). Dans cette réponse phones.length
sera valide.
2) itérez les objets contenus dans l'objet de votre téléphone et comptez - les au fur et à mesure, p.ex.
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 à ce
envisagez d'utiliser underscore.js . Il vous permettra de vérifier la taille i.e. comme cela:
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 changer 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);
});
});