en utilisant le flux suivant:
http://api.Twitter.com/1/statuses/user_timeline.json?screen_name=Microsoft&include_rts=1&count=10
Je suis parvenu à parcourir cette page avec succès pour obtenir les détails que je souhaite afficher sur ma page html.
Cependant, je dois vérifier si retweeted_status.user.profile_image_url
existe et je ne sais pas comment faire cela.
Actuellement, je suis en train de parcourir les données où data
est renvoyé par jquery-ajax:
data[i].retweeted_status.user.profile_image_url
si data[i].retweeted_status.user.profile_image_url
n'existe pas, il ne retourne pas null ou undefined, j'obtiens simplement l'erreur suivante:
cannot read property 'user' of undefined
Ce message d'erreur suggère que vos données [i] ou votre statut retweeté ne sont pas définies, ce qui signifie que votre appel pour obtenir le JSON est probablement en train d'échouer. Lorsque les données sont renvoyées de Twitter, elles ont toujours une url d’image de profil, car elles affichent une image ressemblant à un œuf pour celles qui n’ont pas été téléchargées. Vous devriez mettre ceci avant votre boucle:
if (typeof(retweeted_status) != "undefined")
{
//code for what to do with json here
}
Je pense que c'est une bonne réponse:
if('key' in myObj)
if (something !== undefined) {
...
}
... ou même mieux:
if (typeof something != "undefined") {
...
}
Si vous faites une boucle et accédez à des objets imbriqués:
if(!data)
return;
while(data.length)
{
var Tweet_data = data.shift();
/* do some work */
if(!Tweet_data|| !Tweet_data.retweeted_status)
continue;
var retweeted_status = Tweet_data.retweeted_status;
/* do your other work */
}
Cette boucle n'a plus besoin d'utiliser des index de tableau, ce qui n'est pas le plus efficace sauf si vous avez spécifiquement besoin de l'index. Au lieu de cela, il extrait le premier élément du tableau et utilise directement cet objet. Les internes de la boucle peuvent alors vérifier l'existence d'une propriété sur Tweet_data
.
J'essaie d'éviter d'utiliser plus d'un niveau de déréférencement pour 2 raisons (comme objA.child.property
): 1) Vous pouvez vérifier l'existence d'un objet dès le départ et, s'il n'existe pas, sauter ou attribuer des valeurs par défaut. values. 2) Chaque fois que JavaScript doit accéder à la méthode property
, il doit d'abord rechercher child
avec objA
puis accéder à property
. Pourrait être lent dans les grandes boucles.
Une autre chose que vous pouvez faire, qui a fonctionné pour moi:
if(retweeted_status) {
// your code
}
Jetez un coup d'oeil à $ .grep () . Il vous aide à parcourir les objets JSON. Je l'ai utilisé sur le lien que vous avez fourni. Je l'ai utilisé pour parcourir les tweets et trouver les images utilisateur retweetées. Vous pouvez consulter mon code ici: http://jsfiddle.net/q5sqU/7/