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

Développement Web en Java Discussion :

[Java / JSON] Erreur "Cast Exception"


Sujet :

Développement Web en Java

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut [Java / JSON] Erreur "Cast Exception"
    Bonjour à tous,
    comme je ne suis pas habitué à poster sur developpez.net, je vous prie de m'excuser si le sujet n'est pas dans la bonne rubrique.

    Je vais donc vous exposer mon problème: je suis actuellemnt en train de développer un programme d'interrogation de base de données dont les réponses me parviennent au format JSON, dont voici un extrait d'une réponse type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"emd":{"version":2,"currentTime":"2014-09-02T14:29:08Z","name":"item_prices","key":"buysell,typeID,regionID","columns":"buysell,typeID,regionID,price,updated","result":[{"row":{"buysell":"s","regionID":"10000002","typeID":"4399","price":21125715.613737,"updated":"2014-09-02 14:27:40"}},{"row":{"buysell":"s","regionID":"10000002","typeID":"4401","price":"0","updated":"2014-09-02 14:29:08"}},{"row":{"buysell":"s","regionID":"10000002","typeID":"26286","price":104999989.232,"updated":"2014-09-02 13:00:13"}},...}
    J'effectue donc un parse de cette réponse 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
    public static void questionURL(String sUrl) throws IOException {
    		URL url;
    		url = new URL(sUrl);
    		double dPrice = 0;
    		DecimalFormat df = new DecimalFormat("############.00");
     
    		InputStream is = url.openStream();
    		JsonReader rdr = Json.createReader(is);
     
    		JsonObject obj = rdr.readObject();
    		JsonObject results = obj.getJsonObject("emd");
     
    		//tableau dans JSON
    		JsonArray resultArray = results.getJsonArray("result");
     
    		for (JsonObject joData : resultArray.getValuesAs(JsonObject.class)) {
    			System.out.print("regionID : " + joData.getJsonObject("row").getString("regionID","!regionID") + " | ");
    			System.out.print("typeID : " + joData.getJsonObject("row").getString("typeID","!typeID") + " | ");
     
    			//Récupérer un double puis l'afficher formatté
    			dPrice = Double.valueOf(joData.getJsonObject("row").getJsonNumber("price").doubleValue());
    			System.out.println("price : " + df.format(dPrice));
    			System.out.println("-----------");
    		}			     
    	}
    Lorsque j'applique ce code au JSON ci-dessus, cela me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    -----------
    regionID : 10000002 | typeID : 4399 | price : 21125715,61
    -----------
    regionID : 10000002 | typeID : 4401 | Exception in thread "main" java.lang.ClassCastException: org.glassfish.json.JsonStringImpl cannot be cast to javax.json.JsonNumber
    	at org.glassfish.json.JsonObjectBuilderImpl$JsonObjectImpl.getJsonNumber(JsonObjectBuilderImpl.java:189)
    	at dataBaseExe.questionURL(dataBaseExe.java:153)
    	at dataBaseExe.createUrlQuery(dataBaseExe.java:124)
    	at Items.setAl(Items.java:34)
    	at Items.<init>(Items.java:12)
    	at priceViewer.main(priceViewer.java:47)
    Comme vous pouvez le constater le premier item est bien interprété. Néanmoins le second, correspondant au typeID 4401, dispose d'un prix égale à 0. Or ce dernier n'est apparemment pas bien parsé ou interprété de part sa valeur nulle.

    Aussi, après de nombreuses tentatives, dont certaines implémentant des exceptions, je vous expose mon problème, en espérant trouver de l'aide.

    Cordialement.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut
    je viens de me rendre-compte que dans la réponse en JSON la valeur 0 était entre "", alors que les autres valeurs ne le sont pas.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut
    Après m'être rendu-compte de cette spécificité dans le code, j'ai pu intercepter la bonne exception et la traiter en conséquence.

    Je remercie tous ceux qui ont réfléchi à ce problème, et je m'excuse de ne pas avoir creusé davantage avant de poster.

    Bonne journée

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

Discussions similaires

  1. erreur Class Cast Exception
    Par friedamichelle dans le forum Langage
    Réponses: 3
    Dernier message: 25/05/2008, 16h54

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