Problème de parsing JSON

Problème de parsing JSON - Javascript/Node.js - Programmation

Marsh Posté le 26-05-2017 à 00:09:35    

Bonjour à tous,
 
J'ai un problème certainement très bête, mais qui commence à me coûter cher en aspirine ...
J'ai ce bout de code (j'ai supprimé mon url par sécurité dedans):

Code :
  1. var xhr = new XMLHttpRequest();
  2.     xhr.onreadystatechange = function() {
  3.         if (xhr.readyState == XMLHttpRequest.DONE) {
  4.             jsonData = JSON.parse(xhr.responseText);
  5.             data = jsonData.coord;
  6.             document.write(data);
  7.         }
  8.     }
  9.     xhr.open('GET', "https://[mon-url]", true);
  10.     xhr.send();


 
Le but est de requêter une API AWS API Gateway, qui renvoie du JSON, que je parse dans un objet JSON avec jsonData = JSON.parse(xhr.responseText).
 
Si je fais document.write(jsonData) j'obtient :

Code :
  1. {"coord":{"lon":2.35,"lat":48.85},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":291.97,"pressure":1019,"humidity":56,"temp_min":288.15,"temp_max":295.15},"visibility":10000,"wind":{"speed":3.1,"deg":60},"clouds":{"all":0},"dt":1495747800,"sys":{"type":1,"id":5615,"message":0.0022,"country":"FR","sunrise":1495684591,"sunset":1495741168},"id":2988507,"name":"Paris","cod":200}


 
(oui, je me fais la main sur OpenWeatherMap ^^).
 
Mais si je tente d'accéder à une donnée de la structure JSON, jsonData.coord par exemple, j'ai :

Code :
  1. undefined


 
Je ne comprend pas du tout pourquoi je n'arrive pas à parcourir ma structure json ... Je suis sous Chrome 58 64 bits sur MacOS.
 
Est-ce que quelqu'un a une idée de ce que je fais surement mal ? :)
 
Merci d'avance !


---------------
Les pièces jointes, c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas.
Reply

Marsh Posté le 26-05-2017 à 00:09:35   

Reply

Marsh Posté le 29-05-2017 à 19:45:55    

:hello:  
Une piste au pif:
 
Tes variables jsonData et data ne sont pas déclarées au préalable, et est donc placée dans le scope global.
Tu as peut-être un "use strict" en tête de script, une raison qui pourrait rendre ta variable globale illisible.
 
Où tentes-tu ton jsonData.coord?  
Tenté un jsonData['coord'] ? Et un jsonData['coord']['lon'] ? data['coord']['lon'] ?


Message édité par potemkin le 29-05-2017 à 19:46:03
Reply

Marsh Posté le 29-05-2017 à 21:45:05    

Merci pour ta réponse !
Je viens de trouver, c'est très c**, mais en fait il fallait parser 2 fois les données :
 

Code :
  1. jsonData = JSON.parse(xhr.responseText);
  2. jsonData = JSON.parse(jsonData);


 
Et là ça marche ...


Message édité par talium le 29-05-2017 à 21:45:30

---------------
Les pièces jointes, c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas.
Reply

Marsh Posté le 29-05-2017 à 22:34:48    

[:babaji]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed