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

Android Discussion :

Récupérer tout les paramètres d'un JSON


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Points : 20
    Points
    20
    Par défaut Récupérer tout les paramètres d'un JSON
    Bonjour,

    Je voudrais récupérer tout les paramètres d'un JSON mais je doute que tout fonctionne comme je l'ai fais.
    Voilà un petit exemple.
    ça c'est la parti dans mes accesseurs ou ce trouve la position de mes objets:

    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
     
    public static class PositionBean {
            /**
             * lat : 47.212108463141774
             * lng : -1.553049129320471
             */
     
            private double lat;
            private double lng;
     
            public double getLat() {
                return lat;
            }
     
            public void setLat(double lat) {
                this.lat = lat;
            }
     
            public double getLng() {
                return lng;
            }
     
            public void setLng(double lng) {
                this.lng = lng;
            }
        }
    Comment la récupérer ?
    Pour les autres objet je n'ai pas de soucis.

    Voilà ou je reçois mes objets quand je regarde dans le debbuger en mettant un point d'arrêt sur mon log.d:

    Nom : appli debbuger.png
Affichages : 450
Taille : 118,2 Ko

    Une idée ?
    ça fait déjà plus d'une semaine que je demande ici mais c'est vide.

  2. #2
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Peux tu poster du code, entre balises, pour que ca soit lisible... parce que là ca ne l'est pas...
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Points : 20
    Points
    20
    Par défaut
    Bah je viens de le faire juste au dessus.
    Le screen c'est pour montrer la console et la parti du code qui me retourne mes objets gson

  4. #4
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Salut,

    je me permet de te passer le lien youtube de 2 vidéos que j'ai créées pour
    apprendre à utiliser les librairies
    • OkHttp pour la connexion au Web Service et le téléchargement du json
    • Gson pour transformer la chaine Json en objet Java
    Et le plugin
    • GsonFormat, pour fabriquer automatiquement une classe (POJO) capable de représenter les objets Json.

    https://youtu.be/yk_k-tiyQ5M

    Cordialement,

  5. #5
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Oui enfin ton screen est illisible, et ton POJO n'est pas vraiment la partie utile... bref.
    Ta position est un objet json, donc tu devrais pouvoir la récupérer simplement avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    reponseObj.getPosition().getLat();
    qui te retournera un double...
    Si ca n'est pas ca, publie le code qui ne fonctionne pas, ce qui est la partie utile, et fait des copié collé de tes retours console, mais pitié pas de screen...
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Points : 20
    Points
    20
    Par défaut
    Et comment je fais sans screen pour montrer d'où proviens l'erreur ?

    Dans ma class:

    L'entête ou je déclare mes variables ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Gson gson;
        AsyncHttpClient client;
        //J'ai mis les deux pour tester la différence
        ResponseJSON responseObj[];
        ResponseJSON reponse;
     
        String BASE_URL = "L'url de ma fameuse API";
     
        private static final String TAG = "RecupAPIActivity";

    Et là où je récupère mes objets:

    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
    35
     
     
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            client = new AsyncHttpClient();
     
            client.get(RecupApi.this, BASE_URL, new AsyncHttpResponseHandler() {
     
     
                @Override
                public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
     
                    //On instancie un nouvelle objet "responsestr" de type String
                    String responsestr = new String(responseBody);
                    //On instancie un nouvelle objet "gson" de type "Gson"
                    gson = new Gson();
                    //On affecte à notre variable "responseObj" la valeur que nous retourne gson (parser automatiquement mon JSON en objet) qui lui récupère l'objet responsesstr de la class ResponseJSON (class qui contient nos paramètres pour nos vélos JSON et nos listes d'objets vélo
                    responseObj = gson.fromJson(responsestr, ResponseJSON[].class);
                    //Je défini les champs de mes objets
                    reponse.getName();
                    reponse.getAddress();
                    reponse.getPosition();
                    reponse.isBanking();
                    reponse.isBonus();
                    reponse.getStatus();
                    reponse.getContract_name();
                    reponse.getBike_stands();
                    reponse.getAvailable_bike_stands();
                    reponse.getAvailable_bikes();
                    reponse.getLast_update();
                    reponse.PositionBean().getLat();
                    responseObj.PositionBean().getLng();
     
                    //Affichage objet dans le debbugger
                    Log.d(TAG , "RecupAPI" + responseObj);
    Voilà d'où proviens l'erreur sous forme de screen:

    Nom : erreur appli.png
Affichages : 453
Taille : 22,7 Ko

    Avec le code et le screen l'erreur est clair.
    J'ai test les deux, même si je sais/pense qu'il faut utiliser "reponse" et pas "responseObj".

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Points : 20
    Points
    20
    Par défaut
    Je n'avais pas fait attention au message de : Philippe PONS.
    Merci, enfaite je viens de voir que ton tutoriel est intéressent.
    J'ai vue aussi que tu utilisais OkhttpClient, tu peux aussi comme moi utiliser "AsyncHttpClient()" qui est également asynchrone.
    Si on traite bien les mêmes choses de la même façon.


    ça, c'est ce que je test désormais, je n'avais pensée puisqu'au début je pensais utilisé une autre classe.
    Cependant ça ne fonctionne toujours pas.

    Déclaration de mes variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Gson gson;
        AsyncHttpClient client;
        ResponseJSON responseObj;
        ResponseJSON.PositionBean responseObj2;
    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
    35
     
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            client = new AsyncHttpClient();
     
            client.get(RecupApi.this, BASE_URL, new AsyncHttpResponseHandler() {
     
     
                @Override
                public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
     
                    //On instancie un nouvelle objet "responsestr" de type String
                    String responsestr = new String(responseBody);
                    //On instancie un nouvelle objet "gson" de type "Gson"
                    gson = new Gson();
                    //On affecte à notre variable "responseObj" la valeur que nous retourne gson (parser automatiquement mon JSON en objet) qui lui récupère l'objet responsesstr de la class ResponseJSON (class qui contient nos paramètres pour nos vélos JSON et nos listes d'objets vélo
                    responseObj = gson.fromJson(responsestr, ResponseJSON.class);
                    responseObj2 = gson.fromJson(responsestr, ResponseJSON.PositionBean.class);
                    //Je défini les champs de mes objets
                    responseObj.getName();
                    responseObj.getAddress();
                    responseObj.getPosition();
                    responseObj.isBanking();
                    responseObj.isBonus();
                    responseObj.getStatus();
                    responseObj.getContract_name();
                    responseObj.getBike_stands();
                    responseObj.getAvailable_bike_stands();
                    responseObj.getAvailable_bikes();
                    responseObj.getLast_update();
                    responseObj2.PositionBean.getLat();
                    responseObj2.PositionBean.getLng();
     
                    //Affichage objet dans le debbugger
                    Log.d(TAG , "RecupAPI" + responseObj);
    Nom : erreur appli 2.png
Affichages : 434
Taille : 30,1 Ko

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Points : 20
    Points
    20
    Par défaut
    Bon, autrement, je n'arrie pas à faire passer mon objet avec un Intent vers une autre Activity.

    J'ai fais ça:

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
    public class RecupApi extends Activity {
     
        Gson gson;
        AsyncHttpClient client;
        ResponseJSON responseObj[];
     
     
        String BASE_URL = "mon api";
     
        private static final String TAG = "RecupAPIActivity";
     
        public RecupApi() {
            gson = new Gson();
        }
     
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            client = new AsyncHttpClient();
     
            client.get(RecupApi.this, BASE_URL, new AsyncHttpResponseHandler() {
     
     
                @Override
                public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
     
                    //On instancie un nouvelle objet "responsestr" de type String
                    String responsestr = new String(responseBody);
                    //On instancie un nouvelle objet "gson" de type "Gson"
                    gson = new Gson();
     
                    responseObj = gson.fromJson(responsestr, ResponseJSON[].class);
     
     
                    //Affichage objet dans le debbugger
                    Log.d(TAG , "RecupAPI" + responseObj);
     
                    //On envoie nos objets
                    Intent objet = new Intent(RecupApi.this,MapsActivity.class);
                    objet.putExtra(responseObj);
                    sendBroadcast(objet);
     
    }
    Le problème viens de "responseObj que je passe dans putExtra.
    Il n' y a pas de message d'erreur.

    Pourquoi cela ne fonctionne pas ?

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/05/2006, 09h58
  2. récupérer toutes les Options d'1 select
    Par javaSudOuest dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/12/2005, 08h37
  3. récupérer toutes les valeurs choisies ds un select multiple
    Par toome dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/10/2005, 13h45
  4. Récupérer toutes les cases à cocher
    Par psyco2604 dans le forum ASP
    Réponses: 7
    Dernier message: 14/10/2004, 10h54

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