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 :

Exploitation JSON android


Sujet :

Android

  1. #1
    Membre habitué Avatar de Willy55
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 188
    Points : 131
    Points
    131
    Par défaut Exploitation JSON android
    Bonjour, je bloque sur un problème stupide pour exploiter un json qui se présente comme suit :

    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
    {
        "status": "ok",
        "response": {
            "1": [
                {
                    "Albert 1er": {
                        "id": "74400610",
                        "lat": "43.6165153431063",
                        "lon": "3.87407454752208",
                        "name": "Place Albert 1er",
                        "town": "Montpellier",
                        "lines": [ ]
                    }
                },
                {
                    "Antigone": {
                        "id": "74401726",
                        "lat": "43.6085958455429",
                        "lon": "3.8866476240206",
                        "name": "Antigone",
                        "town": "Montpellier",
                        "lines": [ ]
                    }
                },
                {
                    "Boutonnet": {
                        "id": "74400693",
                        "lat": "43.6227119628888",
                        "lon": "3.86817771124942",
                        "name": "Boutonnet",
                        "town": "Montpellier",
                        "lines": [ ]
                    }
                }
            "4": [
                {
                    "Albert 1er": {
                        "id": "74400610",
                        "lat": "43.6165153431063",
                        "lon": "3.87407454752208",
                        "name": "Place Albert 1er",
                        "town": "Montpellier",
                        "lines": [ ]
                    }
                },
                {
                    "Corum T1": {
                        "id": "74400607",
                        "lat": "43.6142802818104",
                        "lon": "3.88191577851311",
                        "name": "Corum",
                        "town": "Montpellier",
                        "lines": [ ]
                    }
                }
            ]
        }
    }
    Je vais me balader dans le JSON comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JSONObject jsonObj = new JSONObject(result);
    			JSONObject json_data = jsonObj.getJSONObject("response");
    			JSONArray jArray = json_data.getJSONArray(numLigne);
     
    			for(int i=0;i<jArray.length();i++){
    				JSONObject json_dataNA = jArray.getJSONObject(i);
    De la si je fais un J'aurai : {"Corum T1":{"id":"74400607","lines":[],"lon":"3.88191577851311","town":"Montpellier","lat":"43.6142802818104","name":"Corum"}}

    Comment je peux récupérer les id, lon, lat de chaque objet sachant qu'il est nommé a chaque fois et que je ne peux pas préciser le nom a chaque fois pour descendre à l'intérieur

    En gros dans le JSONArray si j'avais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    {
                        "id": "74400610",
                        "lat": "43.6165153431063",
                        "lon": "3.87407454752208",
                        "name": "Place Albert 1er",
                        "town": "Montpellier",
                        "lines": [ ]
    }
    Je pourrais accéder à toute les données mais la j'ai un objet dans un objet... J'espère que je suis clair.

    Cordialement.

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Salut,

    Il n'est pas très propre le JSON... en effet... par définition un "objet" JSON ( entre { } ) a des propriétés, à chaque nom de propriété une valeur.
    Hors la on a un tableau d'objets hétéroclites qui n'ont *jamais* les mêmes propriétés, c'est un peu comme si en Java, on stockait un "Object[]" avec comme objet un coup un truc { ObjectData albert1er; } un autre avec { ObjectData tartempion; } ...

    D'ailleurs la transformation du JSON en javascript (que soit par AJAX genre: $.getJSON() ou autre) va être assez problématique.


    Sinon, pour revenir au problème, et si le schéma JSON ne peut être modifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    JSONArray jArray = json_data.getJSONArray(numLigne);
    for (int i = 0; ( i< jArray.length()); ++i) {
       JSONObject jObject = jArray.getJSONObject(i);
       // on lit l'unique propriété de l'objet:
       String name = jObject.keys().next();
       // on récupère l'objet
       JSONObject jData = jObject.getJSONObject(name);
       // et voila
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre habitué Avatar de Willy55
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 188
    Points : 131
    Points
    131
    Par défaut
    Ah ! Donc je ne suis pas fou ce json est vraiment bizarre, et c'est l'api fournie par une compagnie de transport en commun donc bien sur non modifiable...

    Merci pour ta réponse parfaite comme d'habitude, tu me débloque tellement

    Reconnaissance éternelle.

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

Discussions similaires

  1. JSON & Android
    Par sherlock-holmes dans le forum Android
    Réponses: 1
    Dernier message: 09/03/2013, 13h07
  2. MySQL -> PHP -> JSON -> Android
    Par jonathantarabbia dans le forum Android
    Réponses: 7
    Dernier message: 10/04/2011, 19h19
  3. Exploiter un contenu renvoyé en JSON
    Par tchoumak dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2009, 20h27
  4. PHP et Json lecture et exploitation
    Par malkie dans le forum Langage
    Réponses: 10
    Dernier message: 25/02/2009, 02h37

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