2013-09-22 1 views
0

J'ai eu des difficultés avec quelques lignes de code Javascript qui devraient être simples. J'ai réduit ma chaîne JSON à celle trouvée ci-après. La première alerte dans le code ci-après génère le message suivant:Lecture des valeurs du message JSON

{"list": [{"text": "Text1", "created_at": "Date1"}, {"text": "Text2", " created_at ":" Date2" }]}

Cependant, la seconde alerte génère l'erreur suivante dans IE: erreur: impossible d'obtenir la valeur de la propriété '0': objet est nul ou non défini

var data = "{\"list\":[{\"text\":\"Text1\", \"created_at\":\"Date1\"},{\"text\":\"Text2\", \"created_at\":\"Date2\"}]}"; 
alert(data); 
alert(data.list[0].created_at); 

Est-ce que quelqu'un pourrait comprendre pourquoi je reçois cette erreur?

Répondre

3

data est une chaîne ordinaire; il n'a pas de propriétés.

Vous voulez analyser le JSON dans la chaîne dans un objet Javascript:

var obj = JSON.parse(data); 
+0

Merci. J'ai d'abord analysé la chaîne comme vous l'avez suggéré, mais obtenais une autre erreur. Par conséquent, j'avais trouvé la réponse suivante au lien ci-après qui semblait suggérer le contraire, et ainsi avait complètement enlevé l'analyse. http://stackoverflow.com/questions/14265929/unable-to-solve-error-uncaught-syntaxerror-unexpected-token-o Je suppose que je n'avais pas interprété correctement cette réponse. Je crois que mon erreur initiale était liée au format de l'objet JSON lui-même. Merci encore. – JF0001

+0

@ JF0001: Il semblerait que vous appeliez 'JSON.parse()' sur un objet, pas une chaîne. – SLaks

1

Vous utilisez une chaîne de mise en forme JSON, mais est lui-même JSON pas.

Vous devez utiliser ceci:

var data = {"list":[{"text":"Text1", "created_at":"Date1"},{"text":"Text2", "created_at":"Date2"}]}; 
alert(data.list[0].created_at); 

Ou utilisez:

var jsonData = JSON.parse(data); 
alert(jsonData.list[0].created_at); 
Questions connexes