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

Format d'échange (XML, JSON...) Java Discussion :

Problème accès à un tableau JSOn qui possède plusieurs champs différent (JAVA)


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 2
    Par défaut Problème accès à un tableau JSOn qui possède plusieurs champs différent (JAVA)
    Bonjour , c'est mon premier sujet mais je vais essayer de ne pas faire de gaffe.
    Je développe une app sur Android studio avec des Call Retrofit2
    Actuelle j'intéroge avec une requete Http une base qui me ramène plusieurs Objets en Json, il y a un champ "stats'" qui est un tableau de plusieurs autre champ, actuellement j'arrive à ramener les champs pour les consulter mais je n'arrive pas et je ne vois pas comment m'y prendre pour celui la.
    Voila pourquoi je demande de l'aide pour que l'on m'éclaire sur le sujet svp. Je vais vous exposer les lignes de codes :

    Nom : Capture.PNG
Affichages : 271
Taille : 28,4 Ko
    @Serialized agit comme un alias avec le Json

    Nom : 2.PNG
Affichages : 237
Taille : 2,9 Ko
    Nom : 3.PNG
Affichages : 242
Taille : 15,3 Ko
    Nom : 4.PNG
Affichages : 244
Taille : 24,8 Ko
    Nom : 5.PNG
Affichages : 247
Taille : 24,9 Ko

    Dans la boucle j'ai pensé que pour chaque élément dans stats je ramène le champ from et le champ to , mais bon comme le savez cela n'est pas bon.

    Donc comme vous le voyez dans le json il y a des champs vitalité, Sagesse , ect.... et c'est ceux la que j'essaye de récupérer.
    Si jamais ma classe Equipement avec le champ stats est mal penser n'hésitez surtout pas.
    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 576
    Par défaut
    Hello,

    c'est plutôt le JSON qui est mal fichu. Il aurait fallu que stats soit un objet au lieu d'un tableau, comme ça :

    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    "stats": {
      "Vitalité": {
        "from": 61,
        "to": 80
      },
      "Sagesse": {
        "from": 21,
        "to": 30
      }
    }

    Avec le JSON que tu as, c'est dur de faire du mapping. Tu vas devoir faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private List<Map<String, Range>> stats;
    avec Range grosso-modo comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Range {
      private int from;
      private int to;
    }
    et qui s'utilise un peu comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(Map<String, Range> element : equipement.getStat()) {
      String name = element.keySet().iterator().next();
      int from = element.values().iterator().next().getFrom();
      int to = element.values().iterator().next().getTo();
    }
    que tu peux éventuellement cacher à l'intérieur de la classe Equipement.

    Ou alors tu vas devoir utiliser un TypeAdapter de GSON.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 896
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par Funity972 Voir le message
    Bonjour , c'est mon premier sujet mais je vais essayer de ne pas faire de gaffe.
    Bonjour,
    Commence alors s'il te plaît par éviter de nous balancer ton code dans des images et met le dans la balise [CODE] appropriée...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 2
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Hello,

    c'est plutôt le JSON qui est mal fichu. Il aurait fallu que stats soit un objet au lieu d'un tableau, comme ça :

    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    "stats": {
      "Vitalité": {
        "from": 61,
        "to": 80
      },
      "Sagesse": {
        "from": 21,
        "to": 30
      }
    }

    Avec le JSON que tu as, c'est dur de faire du mapping. Tu vas devoir faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private List<Map<String, Range>> stats;
    avec Range grosso-modo comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Range {
      private int from;
      private int to;
    }
    et qui s'utilise un peu comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(Map<String, Range> element : equipement.getStat()) {
      String name = element.keySet().iterator().next();
      int from = element.values().iterator().next().getFrom();
      int to = element.values().iterator().next().getTo();
    }
    que tu peux éventuellement cacher à l'intérieur de la classe Equipement.

    Ou alors tu vas devoir utiliser un TypeAdapter de GSON.
    Ce que je ne comprend pas trop c'est que vu que je "map" avec des @SerializedName je dois du coup ne pas le faire ? ou au contraire le faire pour from et to ?
    Merci pour ta proposition qui m'a l'aire inintéressante je vais regarder ça de plus près. Effectivement je JSON est mal fichu !

Discussions similaires

  1. [XL-2010] Problème: Constituer un tableau sur une spreadsheet à partir de différentes spreadsheets
    Par ControleNonDestructi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/10/2014, 11h35
  2. [AJAX] Liste déroulante qui alimente plusieurs champs texte
    Par alone06 dans le forum jQuery
    Réponses: 4
    Dernier message: 07/07/2014, 23h00
  3. [Toutes versions] Requête qui affiche plusieurs champs mais ne groupe que par un seul
    Par Fandyz dans le forum Access
    Réponses: 10
    Dernier message: 14/10/2012, 18h19
  4. Réponses: 4
    Dernier message: 01/06/2012, 13h49
  5. Réponses: 6
    Dernier message: 21/11/2009, 17h42

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