web-dev-qa-db-fra.com

Comment parcourir cet objet JSON dans jQuery?

J'ai un objet JSON qui est généré par PHP. C'est un objet avec un ensemble de dates. Il a le timeStamp puis une version formatée de la date. Comment pourrais-je répéter cela dans jQuery?

{
  "dates":[
    {
      "timeStamp": 1317596400,
      "formattedDate": "Mon 03 October 2011"
    },
    {
      "timeStamp": 1317682800,
      "formattedDate": "Tue 04 October 2011"
    },
    {
      "timeStamp": 1317855600,
      "formattedDate": "Thu 06 October 2011"
    }
  ]
}

J'ai essayé:

for (var i in data) { 
  alert(data.dates[i].timeStamp); 
};

for (var i in data) { 
  alert(data[i].dates.timeStamp); 
};

et

for (var i in data) { 
  alert(data.dates.timeStamp[i]); 
};
37
Johnathan Au

Puisque vous avez marqué votre question comme jquery, vous devez utiliser $.each car c'est la fonction d'itérateur de jquery:

$.each(data.dates, function(index, element) {
    alert(element.timeStamp); 
});

Si vous voulez vous en tenir à la syntaxe for in (que je vois que vous avez essayée), une solution pourrait être:

for(var key in data.dates) {
     alert(data.dates[key].timeStamp); 
} 

Mais sachez que la syntaxe for in Peut faire plus que vous ne le pensez: elle itère également sur les propriétés héritées du prototype, donc elle peut être utile pour vous assurer que vous itérez uniquement sur les propriétés de l'instance d'objet:

for(var key in data.dates) {
    // if it's not something from the prototype
    if(data.dates.hasOwnProperty(key)) {
        alert(data.dates[key].timeStamp); 
    }
} 

mise à jour
Une autre manière élégante consiste à utiliser la méthode Object.keys qui renvoie un tableau contenant toutes les clés de l'objet ciblé pour parcourir toutes les propriétés de l'objet:

for(var i=0, keys=Object.keys(data.dates), l=keys.length; i<l; i++) {
    alert(data.dates[i].timeStamp);
} 
74
gion_13

Vous utilisez $.each() .
Cela ressemble à ceci:

$.each(data, function(n, elem) {
    // here you process your data to data loaded to lines               
});
3
mfadel

Vous pouvez simplement parcourir la structure json en utilisant jQuery each :

$.each(data, function(index, element) {
   alert(element.dates.timeStamp); 
});
2

jQuery.each () est probablement le moyen le plus simple, vérifiez ceci: http://api.jquery.com/jQuery.each/

par exemple

$.each(dates, function(index, date) { alert(date.timeStamp); });
0
Mike Simmons