63 votes

Boucle dans la liste d'objets JSON

Je renvoie une liste <> à partir d'un service Web en tant que liste d'objets JSON. J'essaie d'utiliser une boucle for pour parcourir la liste et extraire les valeurs des propriétés. Voici un exemple du code JSON renvoyé:

 {"d":[{"__type":"FluentWeb.DTO.EmployeeOrder",
 "EmployeeName":"Janet Leverling",
 "EmployeeTitle":"Sales Representative",
 "RequiredDate":"\/Date(839224800000)\/",
 "OrderedProducts":null}]}
 

J'essaie donc d'extraire le contenu en utilisant quelque chose comme ceci:

 function PrintResults(result) {

for (var i = 0; i < result.length; i++) { 
    alert(result.employeename);
}
 

Comment cela devrait-il être fait?

68voto

Burcu Dogan Points 6024

Attention, d est la liste.

 for (var i = 0; i < result.d.length; i++) { 
    alert(result.d[i].EmployeeName);
}
 

En passant, votre exemple de sortie semble invalide.

19voto

Cory Points 37551

C'est proche! Essaye ça:

 for (var prop in result) {
    if (result.hasOwnProperty(prop)) {
        alert(result[prop]);
    }
}
 

Mettre à jour:

Si votre résultat est vraiment un tableau d'un seul objet, alors vous devrez peut-être faire ceci:

 for (var prop in result[0]) {
    if (result[0].hasOwnProperty(prop)) {
        alert(result[0][prop]);
    }
}
 

Ou si vous voulez parcourir chaque résultat du tableau s'il y en a plus, essayez:

 for (var i = 0; i < results.length; i++) {
    for (var prop in result[i]) {
        if (result[i].hasOwnProperty(prop)) {
            alert(result[i][prop]);
        }
    }
}
 

16voto

redcrowe Points 131

C'est ici:

 success: 
    function(data) {
        $.each(data, function(i, item){
            alert("Mine is " + i + "|" + item.title + "|" + item.key);
        });
    }
 

Exemple de texte JSON:

 {"title": "camp crowhouse", 
"key": "agtnZW90YWdkZXYyMXIKCxIEUG9zdBgUDA"}
 

9voto

KyleFarris Points 7727

Puisque vous utilisez jQuery, vous pouvez aussi bien utiliser chaque méthode ... De plus, il semble que tout est une valeur de la propriété 'd' dans cet objet JS [Notation].

 $.each(result.d,function(i) {
    // In case there are several values in the array 'd'
    $.each(this,function(j) {
        // Apparently doesn't work...
        alert(this.EmployeeName);
        // What about this?
        alert(result.d[i][j]['EmployeeName']);
        // Or this?
        alert(result.d[i][j].EmployeeName);
    });
});
 

Cela devrait fonctionner. sinon, vous pouvez peut-être nous donner un exemple plus long du JSON.

Edit: Si rien de tout cela ne fonctionne, je commence à penser que la syntaxe de votre JSON pourrait être gênante.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X