je code un script qui parcoure un document JSON que j'apelle via une requête Ajax. Ce fichier Json represente un menu.
J'ai besoin de connaître automatique le nombre de liens dans chaque catégorie. Lorsque je tape à la main var x=y.lien[0].outils.length j'ai le résultat souhaité.
J'essaye d'automatiser ça via une boucle for mais j'ai toujours le même message d'erreur:TypeError: y.lien[i].tabNomCat is undefined
Voici mon code
function afficher(reponse) {
var y = JSON.parse(reponse);
//On déclare une variable qui contient le nombre de catégorie
var nb_Categories=y.lien.length;
//On stocke dans un tableau le nom de chaque catégorie
var tabNomCat=["Outils","Rapport","Consignes","Suivi activités","Astreintes","Outils RH","Autres"];
//On va stocker dans un tableau le nombre de lien par categorie
var tabCat= [nb_Categories];
//la requête suivante donne le nombre de liens pour la catégories outils var x=y.lien[0].outils.length;
//On essaie d'attribuer automatiquement a chaque son nombre de lien
for (var i=0;i<nb_Categories;i++){
tabCat[i]=y.lien[i].tabNomCat[i].length;
console.log(x);
}
}
Effectivement il y avait un problème de casse. Je me suis obstiné à scruter la boucle. Je pensais qu'utiliser plusieurs fois le même indice dans une même boucle pouvait générer des problèmes.
Concernant ta correction sur la ligne 20. Effectivement elle est utile mais je ne comprend pas mon erreur sur ma version à savoir:
Dit autrement, quand tu écris y.lien[i].tabNomCat[i].length; tu dis que "tabNomCat" est le nom d'une propriété de l'objet y.lien[i], tandis que quand tu écris y.lien[i][tabNomCat[i]].length; tu dis que c'est tabNomCat[i] qui est une propriété de y.lien[i]. Ce sera remplacé par une chaîne de caractères à l'exécution.
je me permet de relancer le sujet. Il y a des choses que je n'ai pas bien compris au sujet du parcours de l'arbre JSON. Il y a t il une ou des ressources sur Open Class Room à ce sujet. Suivre le cours sur le JQuery peut il m'aider ? Merci
function traverse_it(obj){
for(var prop in obj){
if(typeof obj[prop]=='object'){
// object
traverse_it(obj[prop[i]]);
}else{
// something else
alert('The value of '+prop+' is '+obj[prop]+'.');
}
}
}
traverse_it(data);
- Edité par Krogoth 31 août 2016 à 8:52:13
Un petit +1 si je vous ai aidé est toujours appréciable :).
Parcours de fichier JSON
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.