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 :

Récupérer une valeur dans un tableau de tableau de JSON


Sujet :

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

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Récupérer une valeur dans un tableau de tableau de JSON
    Bonjour,
    j'ai un petit problème que je n'arrive pas à résoudre malgré plusieurs heures de recherche et de tests.
    Je développe actuellement une plateforme web interrogeant des APIs. Pour résumer vite fait, j'interroge, je récupère un JSON que je parse pour placer les données intéressantes dans des objets de type "Source" puis je sérialise mon tableau d'objets pour envoyer ce Json à mon logiciel. Bref, c'est un peu complexe mais cela marchait pas mal jusqu'à ce que je doive rajouter les prix min et max dans mes objets. En gros, je me balade dans mon JSON, je regarde toutes les offres, je cherche ma devise (ici "EUR") et je récupère mes prix. Mais je ne récupère pas le bon truc.

    Voici un bout de mon JSON que je recupère:
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    "offers": [
                            {
     
                                "in_stock_quantity": 0,
                                "prices": {
                                    "DKK": [
                                        [
                                            3000,
                                            "0.71900"
                                        ],
                                        [
                                            6000,
                                            "0.65000"
                                        ],
                                        [
                                            9000,
                                            "0.55700"
                                        ]
                                    ],
                                    "EUR": [
                                        [
                                            3000,
                                            "0.09600"
                                        ],
                                        [
                                            6000,
                                            "0.08700"
                                        ],
                                        [
                                            9000,
                                            "0.07400"
                                        ]
                                    ],
                                    "GBP": [
                                        [
                                            3000,
                                            "0.06200"
                                        ],
                                        [
                                            6000,
                                            "0.05600"
                                        ],
                                        [
                                            9000,
                                            "0.04800"
                                        ]
                                    ],
                                    "NOK": [
                                        [
                                            3000,
                                            "0.80600"
                                        ],
                                        [
                                            6000,
                                            "0.72800"
                                        ],
                                        [
                                            9000,
                                            "0.62400"
                                        ]
                                    ]
                                },
    Voici un bout de mon code:
    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
    45
     
    //LES PRIX + LES STOCKS
                    // On récupère le tableau d'objets spécifique à l'entrée "offets"
                    JSONArray offers = new JSONArray(objItems.getString("offers"));
     
                    for (int k = 0; k < offers.length(); k++) 
                    {
                        //on crée un objet de chaque "offers"
                        JSONObject objOffers = new JSONObject(offers.getString(k));
     
                        //LES STOCKS
                        quantite += objOffers.getInt("in_stock_quantity");
     
                        //LES PRIX
                        //on crée un objet de chaque "prices"
                        JSONObject objPrices = new JSONObject(objOffers.getString("prices"));
     
                        try
                        {
                            // On récupère le tableau d'objets spécifique à l'entrée "offets"
                            JSONArray devi = new JSONArray(objPrices.getString(devise));
     
                            for (int l = 0; l< devi.length(); l++)
                            {
                                // On récupère le tableau d'objets spécifique à l'entrée "offets"
                                JSONArray prix = new JSONArray(devi.getString(l));
     
                                for (int m = 0; m< prix.length(); m++)
                                {
                                    //ramene seulement le premier chiffre du tableau
                                    prixMax = Math.max(prix.getInt(m), prixMax);
                                    prixMin = Math.min(prix.getInt(m), prixMin);
     
                                    //donne 2 ou rien
                                    //prixMax = prix.length();
                               }
                            }    
                        }
                        catch (JSONException e){
     
                        }
     
                    }
                    produit.setPrixMin(prixMin);
                    produit.setPrixMax(prixMax);
    Le souci est que quand j'ai ceci en JSON, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [
    9000,
    "0.62400"
    ]
    Je récupère 9000 alors que j'aimerais récupérer "0.62400". Mais sans nom (format typique des Json: {nom:valeur}), je galère un peu.

    Donc si une âme charitable et ayant les connaissances pour m'aider passe par là, je lui serais reconnaissante de faire partager son savoir

    Merci d'avance!

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    ?
    Eh ben.... getString(1) !

    Tu lis déjà plein de tableaux avec des boucles, et tout d'un coup tu sais plus comment ça marche sans boucle ?

    Au passage, tous ces new JSONArray et new JSONObject sont inutiles, compliqués, inefficaces et risquent de changer tes données.

    JSONArray offers = new JSONArray(objItems.getString("offers")); => JSONArray offers = objItems.getJSONArray("offers"); ,

    JSONObject objOffers = new JSONObject(offers.getString(k)); => JSONObject objOffers = offers.getJSONObject(k); ,

    Et ainsi de suite.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Comment dire... Ça marche et j'ai bien honte


    C'est tellement simple que je n'ai pas pensé à le faire. J'étais resté avec mon double afin de pouvoir faire les Math.min et Math.max et je n'ai pas réfléchi au fait que c'était un String à récupérer. C'est là qu'on voit la grande débutante en moi. Quand je pense au temps que j'y ai passé, j'ai envie de m’assommer.

    Un gros merci pour la réponse et je prends grandement en compte le conseil afin d'améliorer mon code! Bonne journée

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

Discussions similaires

  1. [HTML] Récupérer une valeur dans un tableau - DIV
    Par frtou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 02/09/2008, 10h12
  2. Récupérer une valeur dans un tableau ?
    Par le polak dans le forum Excel
    Réponses: 1
    Dernier message: 26/05/2008, 18h08
  3. Récupérer une valeur dans un tableau
    Par Jeren dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2008, 10h03
  4. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49

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