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 :

Problème de parsing JSON


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Etudiante
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut Problème de parsing JSON
    Bonjour ,
    Je veux parser des données du serveur google api places .
    Mon problème est que les objets du résultat ne contiennent pas les mêmes attributs .
    Par exemple , des objets contiennent un attribut événements et des autres non.Je veux que je récupères l'attribut événements s'il existe mais le parsing s’arrête dés q'un objet ne contient pas cet attribut et j'obtient cette exception dans mon logcat:
    org.json.JSONException: No value for événements.
    Avez vous des idées s'il vous plait et merci d'avance.

  2. #2
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Un bout de de code ?

    Parce que sinon, il y a optString / optInt ....

  3. #3
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Etudiante
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut
    Bonjour,
    Merci pour votre réponse.
    voila mon fichier json:
    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
    "results" : [
          {
             "formatted_address" : "51-57 Rue de Courcelles, Paris, France",
             "geometry" : {
                "location" : {
                   "lat" : 48.8768740,
                   "lng" : 2.3069790
                }
             },
             "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/bar-71.png",
             "id" : "16ae954b1a545243d47d9affcbf7e189f8c07113",
             "name" : "L'Hôtel du Collectionneur Arc de Triomphe",
             "photos" : [
                {
                   "height" : 991,
                   "html_attributions" : [],
                   "photo_reference" : "CrQBogAAANZ2pUt9fgTa2uPpdi559DtP471afQtH26HSrDNQaIhzWmA6sF82dYWQdR2QhobplTihlHbtskmcFLH4rcPK0tmyYW_Itqo_xq1zJdCGRfk8CplsehfB_5DUywN3n5ITlQv96EJ1D4KzhZ__S8_TZ3wHBHMWi8DbaeCN6HvhKfvjM9_jFBGRA7rQyzLrSftyVrgyrCwfQFyzoUFRx5ps5xJnN259e7GTygXgyWJOd6cmEhBe7qgZVv71gxR1B_XoSZFWGhQYIt5LYPc-FcuKgOTMF_ei4AUDHw",
                   "width" : 1500
                }
             ],
             "rating" : 4.20,
             "reference" : "CpQBhwAAAAzO2FL_wT2JMC6FtY01esgoZK67Oo6t6xQrk3hkcIXAow55PbgwjbvNLS5HjbRUmjAgMs_NY1uCzumTulRsxKtmfl_clHE2FSr-RzE9inkyRPCi1TERq3JUZjaACJzawuNjOFIYRXggojSy8YYiLXRJUtRh_OqUP523VmudyUuqCixyOSjqMfQUPecdG0KEPxIQxHudYWP918p5oJmOzBG2FhoUR-MricUXjGFcNJhxRBg9Y3kTKBM",
             "types" : [ "bar", "restaurant", "lodging", "food", "establishment" ]
          },
          {
             "formatted_address" : "252 Rue du Faubourg Saint-Honoré, Paris, France",
             "geometry" : {
                "location" : {
                   "lat" : 48.8769680,
                   "lng" : 2.3009080
                }
             },
             "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/cafe-71.png",
             "id" : "6fbac182851e41f589d19185d2216a75fd904764",
             "name" : "Salle Pleyel",
             "opening_hours" : {
                "open_now" : false
             },
             "rating" : 4.10,
             "reference" : "CnRqAAAAG2UFnoMW0c4oyw1_inzjmw6AFbsSCJ-zhCCVQ1moX27AA5eq_62aBKeEc_FxKMO1bLK115ARSbuo3fgZnBA-DU7Oz2UGLWjboId4rvCcInfx1wLvaf7y7cbZDyXE7R0UbLu97W0DxOYeTK46XanAGhIQ1YyF0BXt9x2yKhY_HKrl8RoUwsbxnXrDZ0rFrViRRV51GIgrke8",
             "types" : [ "cafe", "bar", "restaurant", "food", "establishment" ]
          },
    Dans cet exemple l'attribut "photo_referece" se trouve seulement dans le premier élément.
    Je veux récupérer ces données dans un arrayList:
    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
    	JSONArray results = json.getJSONArray(TAG_results);
     
     
     
     
    						// parcourir toute la liste des employés
    						for(int i = 0; i < results.length(); i++){
     
    						// récupérer un employé de type JSONObject
    						JSONObject emp = results.getJSONObject(i);
     
     
    						// récupérer le JSONObject phone qui contient deux items
    						JSONObject geometry = emp.getJSONObject(TAG_geometry);
    						JSONObject location = geometry.getJSONObject(TAG_location);
    						String latitude = location.getString(TAG_lat);
    						String longitude= location.getString(TAG_lng);
    						double b = Double.parseDouble(latitude);
    						double c = Double.parseDouble(longitude);
    						String nom= emp.getString(TAG_name);
    						String adresse=emp.getString(TAG_adresse);
    						String reference =emp.getString(TAG_reference);
    						JSONArray photos = emp.getJSONArray("photos");
    						JSONObject photo = photos.getJSONObject(0);
    						String photo_ref=photo.getString("photo_reference");
    						Place p = new Place(reference,nom,adresse,b,c,0, photo_ref);
    						myList.add(p);
    Je veux que je remplis mon arrayList en mettant la valeur 0 par exemple s'il n'y a pas un attribut "photo_reference" et merci beaucoup.

  4. #4
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Etudiante
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut
    Bonjour,
    Merci,J'essaie avec optString mais je penses que je n'arrives pas à exprimer correctement mon problème.
    Mon but est de continuer à parser le fichier malgré qu'il n'y a pas de valeur pour l'attribut "photo_reference", c'est à dire récupérer les valeurs des éléments qui suivent les éléments qui ne possèdent pas cet attribut.
    Avez vous des idées s'il vous plait et merci d'avance.

  5. #5
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Ben oui...

    getString() renvoie une exception si l'entrée n'est pas présente:
    Citation Envoyé par android-doc
    Throws
    JSONException if no such mapping exists.
    Alors que optString() renvoie null ou une chaine vide sinon.

  6. #6
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Etudiante
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut
    Bonjour nicroman,
    Merci pour votre réponse .
    J'ai utilisée "optstring" mais toujours le parsing s’arrête dés qu'on trouve un élément ne possède pas l'atttribut"photo_reference".
    Je veux continuer le parsing malgré cet exception .
    Est ce que c'est possible???et merci bien.

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

Discussions similaires

  1. Problème pour récupérer JSON et parsing
    Par bigwade dans le forum Android
    Réponses: 13
    Dernier message: 27/02/2013, 18h33
  2. parsing json problème parsing
    Par jojo_ol76 dans le forum Android
    Réponses: 3
    Dernier message: 17/05/2012, 02h22
  3. Problème parsing JSON avec Jackson
    Par drhouse87 dans le forum Android
    Réponses: 6
    Dernier message: 06/03/2012, 19h25
  4. problème de parsing json
    Par diengkals dans le forum Android
    Réponses: 6
    Dernier message: 10/05/2011, 15h02
  5. [SAX] Problème de parsing ?
    Par Regis.C dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 22/06/2005, 21h48

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