IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Récupération JSON


Sujet :

NodeJS

  1. #1
    Candidat au Club
    Homme Profil pro
    developpeur
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Récupération JSON
    Bonjour,

    Je suis sur Angular 4.
    j'ai un petit problème sur la récupération de mes données JSON via API.

    Je vous montre la partie de mon code.

    voici le traitement de données dans Node JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    router.get('/termCondition', function (req, res, next) {
    var query = 'ma requette';
     
    request(query, function (error, response, body) {
    if (error) {
    console.log("error" + error);
    return null;
    }
     
    body = JSON.parse(body);
     
    return body;
    });
    });
    et voici ce que j'ai dans mon service:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    getTermCondition() {
     
    return this._http.get("/termcondition/termCondition").map(data => data.json()).toPromise().catch((err) => function(){
    console.log(err);
    });
     
    }
    et enfin mon component:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ngOnInit() {
     
    var componentRef = this;
    //getTermCondition
    this.termService.getTermCondition().then((res) => {
     
    var jsonData = res; 
    componentRef.termAndCondition = jsonData.getPolicy.Air.results.result.air_data.policy_data;
     
    });
     
    }
    Donc le nom de mon api c'est getPolicy.Air et je veux récupérer l'attribut "policy_data". Mais il prend le .Air comme attribut et ça casse l'opération. Je ne peux pas récupérer les véritables attributs

    Je n'ai pas encore trouvé une solution pour mon problème. Pouvez-vous m'aider svp ? merci

  2. #2
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Mais il prend le .Air comme attribut et ça casse l'opération.
    Comprends pas. C'est quoi le message d'erreur ?

    As-tu vérifié dans les outils de debug de ton navigateur, dans la partie réseau, que le flux retourné par ton endpoint /termCondition est correct avant d'entrer dans ton appli angular ?
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  3. #3
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    peut être en passant par une autre notation ?

    jsonData.getPolicy['Air'].res...................
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  4. #4
    Candidat au Club
    Homme Profil pro
    developpeur
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    Comprends pas. C'est quoi le message d'erreur ?

    As-tu vérifié dans les outils de debug de ton navigateur, dans la partie réseau, que le flux retourné par ton endpoint /termCondition est correct avant d'entrer dans ton appli angular ?
    Le message d'erreur c'est: cannot read property 'Air' of undefined.
    Oui j'ai vérifié le flux retourné: c'est correct

  5. #5
    Candidat au Club
    Homme Profil pro
    developpeur
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    peut être en passant par une autre notation ?
    J'ai essayé mais malheureusement, ça retourne la même erreur

  6. #6
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    tu devrai quand même faire un console.log de ton jsonData
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     console.log( 'valeur du jsonData = ' + JSON.stringify( jsonData ));
    et de nous en retourner une copie ici, histoire d'être bien certain de ne pas y voir à minima un problème de majuscules/minuscules...
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  7. #7
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Citation Envoyé par alpha582 Voir le message
    Le message d'erreur c'est: cannot read property 'Air' of undefined.
    Oui j'ai vérifié le flux retourné: c'est correct
    Dans ton flux tu as bien une propriété qui s'appelle getPolicy qui contient une propriété nommée Air ?

    Le nommage est vraiment bizarre. getPolicy ça devrait être un nom de fonction pas de propriété.

    Tu peux nous coller le flux json ici ?
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  8. #8
    Candidat au Club
    Homme Profil pro
    developpeur
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    Dans ton flux tu as bien une propriété qui s'appelle getPolicy qui contient une propriété nommée Air ?

    Le nommage est vraiment bizarre. getPolicy ça devrait être un nom de fonction pas de propriété.

    Tu peux nous coller le flux json ici ?

    j'ai fais une erreur de copie de code plus haut ce n'est pas getPolicy.Air mais getSharedPolicy.Air, Excusez-moi
    Le .Air c'est pas un attribut en faites mais c'est le nom getSharedPolicy.Air
    je te donne ici un capture du json récupéré

    Nom : json.png
Affichages : 186
Taille : 11,6 Ko

  9. #9
    Candidat au Club
    Homme Profil pro
    developpeur
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    tu devrai quand même faire un console.log de ton jsonData
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     console.log( 'valeur du jsonData = ' + JSON.stringify( jsonData ));
    et de nous en retourner une copie ici, histoire d'être bien certain de ne pas y voir à minima un problème de majuscules/minuscules...
    j'ai fais une erreur de copie de code plus haut ce n'est pas getPolicy.Air mais getSharedPolicy.Air, Excusez-moi.
    Voici un extrait du JSON.stringify

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jsonData = {"getSharedPolicy.Air":{"results":{"status":"Success","status_code":100,"result":{"air_data":{"policy_data":{"policy_0":{"category":"contract_popup","block_data":{"baggage_fees":{"title":"Baggage Fees","paragraph_data":{"paragraph_0":"Many airlines charge fees for checked and carry-on baggage, which are not included ...};

  10. #10
    Candidat au Club
    Homme Profil pro
    developpeur
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    ça y est, j'ai résolu mon problème:

    En faites il suffisait de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     jsonData["getSharedPolicy.Air"].results
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     jsonData.getSharedPolicy.Air.results
    Je vous remercies

  11. #11
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Citation Envoyé par alpha582 Voir le message
    j'ai fais une erreur de copie de code plus haut ce n'est pas getPolicy.Air mais getSharedPolicy.Air, Excusez-moi
    Le .Air c'est pas un attribut en faites mais c'est le nom getSharedPolicy.Air
    Ah bah voilà

    Tu est donc obligé d'accéder à cette propriété par indirection componentRef.termAndCondition = jsonData['getSharedPolicy.Air'].results.result.air_data.policy_data;.

    Le point est un caractère réservé, tu n'es pas censé l'utiliser dans un nom de variable. Après tu n'as pas forcément la main sur ton backend, la seule solution est donc l'indirection.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération JSON dans une page HTML
    Par pikamo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/09/2014, 17h08
  2. Problème récupération JSON
    Par Jarell dans le forum Android
    Réponses: 1
    Dernier message: 12/01/2014, 14h14
  3. dataTable et récupération Json
    Par sohnic dans le forum jQuery
    Réponses: 0
    Dernier message: 24/04/2013, 11h43
  4. [AJAX] Récupération d'un fichier JSON avec javaScript
    Par guerin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/11/2006, 19h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo