2011-05-05 6 views
1

J'ai un tableau imbriqué avec un objet qui se trouve dans un objet qui est également dans un objet.Récupération de données JSON

EDIT: Ma structure de données d'origine était malformé, voici donc un plafond d'écran de console.log (données):

enter image description here

C'est retourné d'une requête AJAX et je suis avoir un problème avec arriver à la matrice. L'astuce est qu'il ne retournera pas toujours 3 tableaux par objet parent, la quantité de tableaux dépend de "longueur", ou plutôt, "longueur" est un reflet du nombre de tableaux à attendre dans chaque objet qui contient des tableaux. "OID" est le nom de chaque tableau pour les objets "th" et "uh".

Il arrive aussi d'être plusieurs objets principaux, qui sont itérées avec for(var i in data)

J'ai essayé quelque chose comme:

for(var i in data) { 
    for(var x in data[i].clicks) { 
     //And now I'm lost here 
     //I've tried getting the name of the Array from "OID" 
     //and going from there, that failed miserably. 
    } 
} 

Comment puis-je obtenir le contenu de chacun de ces tableaux, il serait mieux si cela peut être fait sans connaître le nom, la quantité ou la longueur desdits tableaux.

Merci d'avance.

Répondre

1

Votre question et la structure des données n'est pas très claire et je ne suis pas familier avec la syntaxe que vous avez utilisée pour déclarer vos tableaux, cela me semble incorrect.

Si vous aviez l'intention de votre structure de données soit

data={ 
    "Clicks": { 
      "length": 3, //Can be between 0-3 
      "OID": { 
       1: "1", 
       2: "2", 
       3: "3" 
      }, 
      "th": { 
      1: [ 
       null, 
       null, 
       null, 
       null 
      ], 
      2: [ 
       null, 
       null, 
       null, 
       null 
      ], 
      3: [ 
       null, 
       null, 
       null, 
       null 
      ] 
      }, 
      "uh": { 
      1: [ 
       null, 
       null, 
       null, 
       null 
      ], 
      2: [ 
       null, 
       null, 
       null, 
       null 
      ], 
      3: [ 
       null, 
       null, 
       null, 
       null 
      ] 
     } 
    } 
}; 

et ce que vous voulez faire est de parcourir tous les éléments dans th et uh où la clé provient des entrées OID, vous devriez faire quelque chose comme

for(var i = 1; i <= data.Clicks.length; i++){ 
    data.Clicks.th[data.Clicks.OID[i]]; 
    data.Clicks.uh[data.Clicks.OID[i]]; 
} 

Toutefois, si vos clés ne vont pas être autre chose que des chiffres, il semble que vous pourrait être mieux servi en retournant un tableau de tableaux pour chacun des th et uh:

data={ 
    "Clicks": { 
      "th": [ 
       [ 
        null, 
        null, 
        null, 
        null 
       ], 
       [ 
        null, 
        null, 
        null, 
        null 
       ], 
       [ 
        null, 
        null, 
        null, 
        null 
       ] 
      ], 
      "uh": [ 
       [ 
        null, 
        null, 
        null, 
        null 
       ], 
       [ 
        null, 
        null, 
        null, 
        null 
       ], 
       [ 
        null, 
        null, 
        null, 
        null 
       ] 
      ] 
     } 
    }; 

et l'accès comme

//assuming th and uh are of the same length always 
for(var i = 1; i <= data.Clicks.th.length; i++){ 
    data.Clicks.th[i]; 
    data.Clicks.uh[i]; 
} 
+0

La première suggestion a très bien fonctionné. Merci! –

Questions connexes