2011-06-06 5 views
0

J'ai donc un objet JSONjson parsing avec jquery

var json = {"School":{"Keywords":"HBS","SchoolName":"","SchoolUrl":"/Careers/Apply/University_recruiting/Schools/HBS.aspx"}, "School":{"Keywords":"Stanford","SchoolName":"","SchoolUrl":"/Careers/Apply/University_recruiting/Schools/Stanford.aspx"}} 

Et je veux faire une boucle à travers elle pour trouver tous les mots-clés dans cet objet. J'ai essayé $(json.School).each(function(){ console.log(this.Keywords) } mais cela ne semble pas fonctionner. Des indices?

+2

Il n'y a pas une telle chose comme un objet JSON. –

+2

Je ne pense pas que ce soit JSON valide; il a des clés en double dans un objet. – icktoofay

Répondre

0

$.each est utilisé avec des tableaux. Ce que vous avez n'est pas un tableau. C'est un simple objet javascript avec des propriétés. Voici comment un tableau ressemblerait en javascript:

var json = [ 
    { 
     "Keywords":"HBS", 
     "SchoolName":"", 
     "SchoolUrl":"/Careers/Apply/University_recruiting/Schools/HBS.aspx" 
    }, 
    { 
     "Keywords":"Stanford", 
     "SchoolName":"", 
     "SchoolUrl":"/Careers/Apply/University_recruiting/Schools/Stanford.aspx" 
    } 
]; 

Maintenant vous pouvez boucle:

$.each(json, function() { 
    console.log(this.Keywords); 
}); 

Et voici un working live demo.

+0

Hmm, non ce ne serait pas. Il n'y a pas de clés dans un tableau. –

+0

@passcod, vous avez raison. J'ai mis à jour ma réponse. Merci de l'avoir signalé. –

+0

il parle de "l'école". Je pense que cela ferait erreur. aussi, $ .each fonctionne sur les objets, il itère à travers toutes les propriétés et leurs valeurs. $ .each ({a: 1, b: 2}, fonction (clé, valeur) {// première clé d'itération = 'a', valeur = 1}); – Shawn

1

Votre objet json est un tableau de dictionnaire imbriqué. Référence ses éléments avec des chaînes, comme ceci:

$.each(json['School'], function() {... 
+0

Yup cela fonctionne! – climboid

+0

Vous devriez accepter les réponses à vos questions. Vous avez demandé trois, et tous sont encore ouverts. – Blender

0

Vous devez utiliser ... dans

for (key in json){ 
    if (json.hasOwnProperty(key)) { 
     alert(json[key]); 
    } 
} 

toujours vérifier si les propriétés de l'objet est d'éviter les propriétés héritées du prototype

EDIT - qui est moyen d'itérer sur les propriétés du objet, mais je ne sais pas si le vôtre est un objet valide

0

D'abord, json est un nom de variable terrible. Le JSON est invalide. Le premier {devrait être un [, et le dernier} devrait être un]. Vous devriez probablement juste abandonner cette propriété "École" redondante.

de fixation que:

var schoolArray = [ 
    {"Keywords":"HBS","SchoolName":"","SchoolUrl":"/Careers/Apply/University_recruiting/Schools/HBS.aspx"}, 
    {"Keywords":"Stanford","SchoolName":"","SchoolUrl":"/Careers/Apply/University_recruiting/Schools/Stanford.aspx"}]; 

$.each(schoolArray, function(key, value) 
{ 
    var keywords = value.Keywords; 
    var schoolName = value.SchoolName; 
});