web-dev-qa-db-fra.com

Parse JSON avec Ionic 2 et dactylographié

J'essaie d'analyser certaines données JSON de randomuser.me api pour y parvenir. J'ai trouvé quelques tutoriels en ligne, mais il se peut que quelque chose ait changé récemment dans Ionic 2, car aucun d'entre eux ne fonctionne.

Voici ce que j'ai:

import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';
import {Http} from '@angular/http';


@Component({
  templateUrl: 'build/pages/home/home.html'
})
export class HomePage {
  items : any;
  //http://api.randomuser.me/?results=10

  constructor(private navController: NavController, private http: Http) {

    this.http.get("http://api.randomuser.me/?results=10").subscribe(data => {
        console.log("Got data");
        this.items=JSON.parse(data._body).results; // this is the error
        console.log(this.items);
    });
  }

  itemClicked(event, item) {
    console.log(item.title);
    //console.log(event);
  }


}

Dans le terminal, je peux voir l'erreur: data._body - La propriété '_body' est privée et accessible uniquement dans la classe 'Response'.

Que puis-je faire?

4
André D. Oliveira

data._body pour data.text (),

Au lieu de data.text() puis de l’analyser, vous devriez utiliser data.json()

this.items = data.json();

https://angular.io/docs/ts/latest/guide/server-communication.html#!#extract-data

6
basarat

Cela a changé dans les nouvelles versions essayez ceci 

this.items= JSON.parse(data['_body']).results;

4
Adem Ergun

Parce que Ionic 2 a un tout petit peu changé, je pensais partager ma façon de faire.

Pour accéder à une fonction de carte, nous devons ajouter cette ligne sous vos instructions d'importation.

import 'rxjs/add/operator/map';

puis changez votre constructeur en ...

        this.http.get("http://api.randomuser.me/?results=10").map(res => res.json()).subscribe(data => {
        console.log("Got data");
        console.log(this.data);
    });
}

Nous pouvons maintenant voir une chaîne JSON dans la console.
Notez que le seul bit supplémentaire que nous avons ajouté est .map (res => res.json ()

Il y a un gars, Joshua Morony, qui fait beaucoup de vidéos d'Ionic 2 que vous devriez vérifier si vous avez du mal à obtenir les données d'une API: https://www.youtube.com/watch?v=vuc4dp0qHSc&index=33&list= PLvLBrJpVwC7ocO1r-xu218C15iE9gTWBA

1
rawturtle