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 :

parsing json problème parsing


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut parsing json problème parsing
    Bonjour,

    Comment faire pour pouvoir parser ce fichier .json?

    j'ai implémenté ce code mais j'ai une erreur:

    05-16 12:31:39.929: W/System.err(8783): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            Gson gson = new Gson();
            Reader r = new InputStreamReader(getJSONData(url));
            JsonParser parser = new JsonParser();
            JsonArray Jarray = parser.parse(r).getAsJsonArray();
    ArrayList<TempAttente> lcs = new ArrayList<TempAttente>();
     
                for(JsonElement obj : Jarray )
                {
                    TempAttente cse = gson.fromJson( obj , TempAttente.class);
                    lcs.add(cse);
                              }
    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
     
    public class TempAttente {
     
    	public String sens,terminus,infotrafic,temps;
    	private List<Ligne> ligne;
    	private List<Arret> arret;
     
     
    	public String getSens() {
    		return sens;
    	}
    	public void setSens(String sens) {
    		this.sens = sens;
    	}
    	public String getTerminus() {
    		return terminus;
    	}
    	public void setTerminus(String terminus) {
    		this.terminus = terminus;
    	}
    	public String getInfotrafic() {
    		return infotrafic;
    	}
    	public void setInfotrafic(String infotrafic) {
    		this.infotrafic = infotrafic;
    	}
    	public String getTemps() {
    		return temps;
    	}
    	public void setTemps(String temps) {
    		this.temps = temps;
    	}
    	public List<Ligne> getLigne() {
    		return ligne;
    	}
    	public void setLigne(List<Ligne> ligne) {
    		this.ligne = ligne;
    	}
    	public List<Arret> getArret() {
    		return arret;
    	}
    	public void setArret(List<Arret> arret) {
    		this.arret = arret;
    	}
     
     
     
    }

    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
     
     
    public class Ligne {
     
    	public String numLigne,typeLigne;
     
    	public String getTypeLigne() {
    		return typeLigne;
    	}
     
    	public void setTypeLigne(String typeLigne) {
    		this.typeLigne = typeLigne;
    	}
     
    	public String getNumLigne() {
    		return numLigne;
    	}
     
    	public void setNumLigne(String numLigne) {
    		this.numLigne = numLigne;
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Arret {
     
    	public String codeArret;
     
    	public String getCodeArret() {
    		return codeArret;
    	}
     
    	public void setCodeArret(String codeArret) {
    		this.codeArret = codeArret;
    	}
    }
    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
     
    [
     
        {
            "sens": 1,
            "terminus": "Bout des Landes",
            "infotrafic": false,
            "temps": "0 mn",
            "ligne": {
                "numLigne": "32",
                "typeLigne": 3
            },
            "arret": {
                "codeArret": "CRQU4"
            }
        },
        {
            "sens": 1,
            "terminus": "Orvault Gd Val",
            "infotrafic": false,
            "temps": "1 mn",
            "ligne": {
                "numLigne": "2",
                "typeLigne": 1
            },
            "arret": {
                "codeArret": "CRQU1"
            }
        }
     
    ]
    Merci.

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Bonjour,

    Voici la fonction parse:

    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
     
    public ArrayList<TempAttente> parseJSON (String jsonResponse) throws JSONException
    	{
    		JSONArray jArray = new JSONArray (jsonResponse);
    		ArrayList<TempAttente> arrayRes = new ArrayList<TempAttente> ();
    		for (int i=0; i<jArray.length (); i++)
    		{
    			TempAttente tmpAt = new TempAttente ();
    			JSONObject jObject = new JSONObject (jArray.getString (i));
    			tmpAt.setSens (jObject.optInt ("sens"));
    			tmpAt.setTerminus (jObject.optString("terminus", null));
    			tmpAt.setInfotrafic (jObject.optBoolean ("infotrafic"));
    			tmpAt.setTemps (jObject.optString("temps", null));
     
    			JSONObject jLigne = jObject.getJSONObject ("ligne");
    			Ligne ligne = new Ligne ();
    			ligne.setNumLigne (jLigne.optString ("numLigne", null));
    			ligne.setTypeLigne (jLigne.optInt ("typeLigne"));
    			tmpAt.setLigne (ligne);
     
    			JSONObject jArret = jObject.getJSONObject ("arret");
    			Arret arret = new Arret ();
    			arret.setCodeArret (jArret.optString ("codeArret", null));
    			tmpAt.setArret (arret);
    			arrayRes.add (tmpAt);
    		}
    		return arrayRes;
    	}
    Elle te renvoie un tableau de TempAttente.

    Quelques remarques : Tu as mis dans ta classe TempAttente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private List<Ligne> ligne;
    	private List<Arret> arret;
    Or, dans ton JSON ce n'est pas une liste!
    Donc dans ma fonction je n'ai pas inseré une liste d'objet mais un objet.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 64
    Par défaut
    Je te conseille d'utiliser la librairie Jackson. Elle est plus simple à utiliser et très efficace

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut
    j'ai essayé la librairie jackson mais des erreurs dalvik apparaissent

Discussions similaires

  1. Problème de parsing JSON
    Par Arwa89 dans le forum Android
    Réponses: 7
    Dernier message: 30/04/2013, 02h14
  2. Problème pour récupérer JSON et parsing
    Par bigwade dans le forum Android
    Réponses: 13
    Dernier message: 27/02/2013, 18h33
  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. parse JSON et expression régulière
    Par Bruno2000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/06/2006, 16h39

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