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

TypeScript Discussion :

[Angular 4] Bonne récupération des attributs lors appel web service


Sujet :

TypeScript

  1. #1
    Invité
    Invité(e)
    Par défaut [Angular 4] Bonne récupération des attributs lors appel web service
    Bonjour,

    J'ai mis le code suivant pour récupérer les attributs qui sont retournés par une valeur de type JSON retournée par l'appel d'un web service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    			let var_url_donnerConnection=this.AppService.getUrlDonnerConnection(var_email,var_pwd);
    			this.http.get(var_url_donnerConnection,this.AppService.getOptions())
    				.subscribe(				
    					data  => {Mydata=JSON.stringify(data); 	
    						let obj=JSON.parse(Mydata); 
    						let obj2=obj[Object.keys(obj)[0]];
    						let obj3=null;
    						eval("obj3 = ("+obj2+")");
     
    						//les identifiants renseignés sont-ils corrects?
    						if (obj3.result.hasOwnProperty("liberreur")) //ici, non
    						{
    							alert(obj3.result.liberreur);
    						}
    						else //identifiants ok
    						{
    							ws_retour_Connection.Identifiant=obj3.result.Identifiant;
    							ws_retour_Connection.Nom=obj3.result.Nom;
    							ws_retour_Connection.Prenom=obj3.result.Prenom;
    							ws_retour_Connection.AncienneteGroupe=obj3.result.AncienneteGroupe;
    							ws_retour_Connection.Adresse=obj3.result.Adresse;
    							ws_retour_Connection.Ville=obj3.result.Ville;
    							ws_retour_Connection.CodePostal=obj3.result.CodePostal;
     
    							//change page
    							this.navCtrl.push(PagePersonnellePage, {
    									DataUser: ws_retour_Connection
    							});
    							this.connection_email='';
    							this.connection_pwd='';
    						}
    					},
    						err=>alert(err)
    					);
    Ce code fonctionne parfaitement et je me demandais s'il était possible de le simplifier, dans le bloc subscribe, j'ai voulu mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    let obj3=data["_body"];
    Mais je n'arrive pas à accéder aux différents attributs de la valeur retournée par le web service, quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(JSON.stringify(data));
    J'ai ceci qui est affiché:
    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    {"_body":"{\"result\":{\"Identifiant\":\"7B659A22DF8901EB003400000711001F\",\"Nom\":\"xxxx\",\"Prenom\":\"xxxx\",\"AncienneteGroupe\":\"7 années, 9 mois  et 3 jours\",\"Adresse\":\"xxxxxxxxxx\",\"Ville\":\"xxxx\",\"CodePostal\":\"xxxxx\"}}","status":200,"ok":true,"statusText":"OK","headers":{"content-type":["application/json; charset=utf-8"]},"type":2,"url":"http://win-9u040a2kpbv:8081/sdata/WSMobiliteAdeleRH/DonnerConnexion?aLogin=00180&aMDP=xxxx"}

    et quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let obj3=data["_body"];
    alert(JSON.stringify(obj3));
    Ceci est affiché:
    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    "{\"result\":{\"Identifiant\":\"7B659A22DF8901EB003400000711001F\",\"Nom\":\"xxxx\",\"Prenom\":\"xxxx\",\"AncienneteGroupe\":\"7 années, 9 mois  et 3 jours\",\"Adresse\":\"xxxxxxxxxx\",\"Ville\":\"xxxx\",\"CodePostal\":\"xxxxx\"}}"

    Merci
    Dernière modification par Invité ; 05/10/2017 à 18h45.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2017
    Messages : 81
    Points : 132
    Points
    132
    Par défaut
    Tu n'utilises pas TypeScript?

    Tu peux définir une classe pour ton type d'objet et juste faire un renvoi de ta data comme étant un object de ta classe.

    Tu pourras ensuite l'utiliser comme tu veux dans ton component.

  3. #3
    Invité
    Invité(e)
    Par défaut
    A vrai dire, je ne connais pas la différence entre TypeScript et Angular (pas AngularJS), j'ai juste eu 6 mois de cours en javascript quand j'étais à l'université et c'était entre les années 2006 et 2007 une formation me sera proposée,
    Si je comprends bien, il serait possible de typer le retour de la fonction comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    this.http.get(var_url_donnerConnection,this.AppService.getOptions())
    .subscribe(data :  retourdonnerConnection=>{
    //TODO ok
    }, 
    {
    //TODO PAS ok
    });

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bon, j'ai trouvé, en fait, dans la variable JSON, certaines clés avaient pour valeur du texte et non du JSON, ce qui m'avait induit en erreur.

    Mon code simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    let var_url_donnerConnection=this.AppService.getUrlDonnerConnection(var_email,var_pwd);
    			this.http.get(var_url_donnerConnection,this.AppService.getOptions())
    				.subscribe(				
    					data  => {obj=data[Object.keys(data)[0]]; //la valeur de la clé initiale, ie, la clé _body est une chaine, et non du JSON
    						MyData=JSON.parse(obj); 
     
    						//les identifiants renseignés sont-ils corrects?
    						if (MyData.result.hasOwnProperty("liberreur")) //ici, non
    						{
    							alert(MyData.result.liberreur);
    						}
    						else //identifiants ok
    						{
    							ws_retour_Connection.Identifiant=MyData.result.Identifiant;
    							ws_retour_Connection.Nom=MyData.result.Nom;
    							ws_retour_Connection.Prenom=MyData.result.Prenom;
    							ws_retour_Connection.AncienneteGroupe=MyData.result.AncienneteGroupe;
    							ws_retour_Connection.Adresse=MyData.result.Adresse;
    							ws_retour_Connection.Ville=MyData.result.Ville;
    							ws_retour_Connection.CodePostal=MyData.result.CodePostal;
     
    							//change page
    							this.navCtrl.push(PagePersonnellePage, {
    									DataUser: ws_retour_Connection
    							});
    							this.connection_email='';
    							this.connection_pwd='';
    						}
    					},
    						err=>alert(err)
    					);

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

Discussions similaires

  1. Récupération des données via REST Web services
    Par Leaffy dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 09/04/2012, 22h40
  2. Réponses: 3
    Dernier message: 20/05/2008, 16h28
  3. [DOM XML] Récupération des attributs dans un flux xml
    Par opeo dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 11/04/2007, 18h35
  4. Split et bonne récupération des données
    Par n8ken dans le forum MFC
    Réponses: 8
    Dernier message: 01/07/2006, 12h25
  5. Réponses: 4
    Dernier message: 26/04/2005, 12h35

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