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éponse JSON vers un objet Java


Sujet :

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

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Points : 22
    Points
    22
    Par défaut Réponse JSON vers un objet Java
    Dans le cadre d'un projet , j'utilise l'API BING. Le résultat de la réponse est un objet json. Je dois le parser pour lire le nombre de résultats web. J' ai essayé mais ça n a pas marché. j'ai lu pleins de trucs sur le web; mais je n'arrive pas pourquoi lors de l'exécution j'ai toujours cette erreur :
    "main" java.lang.RuntimeException: No-args constructor for class bingAPISearch.BingAPI2$DataContainer does not exist. Register an InstanceCreator with Gson for this type to fix this problem.
    Y'a-t-il quelqu'un(e) qui pourra m'aider ?

    Vous trouviez mes classes ainsi que mon Main ci dessous:

    1// voila les classes construites selon mon objet json retourné:
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    public class DataContainer {
     
            public Data d;
     
            public DataContainer() {
     
                this.d = null;
            }
     
            public Data getD() {
                return d;
            }
        }
     
        public class Data {
     
            public Result[] results;
            public String __next;
     
            public Result[] getResults() {
                return results;
            }
     
            public String getNext() {
                return __next;
            }
     
            public Data() {
                this.results = null;
                this.__next = null;
            }
        }
     
        public class Result {
     
            public Metadata __metadata;
            public String ID;
            public String Title;
            public String Description;
            public String DisplayUrl;
            public String Url;
     
            public Result() {
                this.__metadata = null;;
                this.ID = null;;
                this.Title = null;;
                this.Description = null;;
                this.DisplayUrl = null;;
                this.Url = null;;
            }
     
            public Metadata getMetadata() {
                return __metadata;
            }
     
            public String getID() {
                return ID;
            }
     
            public String getTitle() {
                return Title;
            }
     
            public String getDescription() {
                return Description;
            }
     
            public String getDisplayUrl() {
                return DisplayUrl;
            }
     
            public String getUrl() {
                return Url;
            }
        }
     
        public class Metadata {
     
            public String uri;
            public String type;
     
            public Metadata() {
                this.uri = null;
                this.type = null;
            }
     
            public String getUri() {
                return uri;
            }
     
            public String getType() {
                return type;
            }
        }
    2// Voila mon Main :
    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
    public static void main(String[] args) throws Exception {
     
            StringBuffer sb = BingAPI2.getBing("cat");
     
            System.out.println("cest l objet json:  " + sb.toString());
     
            String json = sb.toString();   
     
     
            DataContainer myDataContainer = new Gson().fromJson(json, DataContainer.class);
     
     
     
        }
    }
    3// et voila mon objet json :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"d":{"results":[{"__metadata":{"uri":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/Web?Query=\u0027cat\u0027&$skip=1&$top=1","type":"WebResult"},"ID":"5d638615-f25a-4856-8df1-01c13960f57c","Title":"Unapei","Description":"Présente l\u0027association, ses activités et conseils aux parents et familles. Elle possède en France des sections locales et maille tout le territoire. Paris, France.","DisplayUrl":"www.unapei.org","Url":"http://www.unapei.org/"},{"__metadata":{"uri":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/Web?Query=\u0027cat\u0027&$skip=2&$top=1","type":"WebResult"},"ID":"a391ba92-eb1b-46c8-bbab-101bc060c129","Title":"CAT - Bienvenue","Description":"Planification, performance des coûts et flexibilité des schémas de transport : nous faisons de votre logistique un atout commercial.","DisplayUrl":"www.groupecat.com","Url":"http://www.groupecat.com/"},{"__metadata":{"uri":"https://ap

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 566
    Points : 21 632
    Points
    21 632
    Par défaut
    Apparemment tu as mis ta classe DataContainer imbriquée à l'intérieur d'une autre classe (BingAPI2).

    Dans ce cas, il faut qu'elle soit statique, sinon ce sera une classe interne et gson (ni quoi que ce soit) ne pourra pas deviner comment en construire une nouvelle instance.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Points : 22
    Points
    22
    Par défaut
    Bonsoir;

    Merci pour la remarque robin56;

    J'ai crée mes classe chacune dans un fichier separé ( Datacontainer, Data,Result,Metadat)

    dans chque classe j ai crée un constructeur avec " no argument";

    j'ai testé et ça marche a merveille.

    Merci encore une fois .

    Cdt;
    Sotra.B

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 566
    Points : 21 632
    Points
    21 632
    Par défaut
    Oui c'est le cas habituel. Ça marche très bien.

    Vu qu'il n'y a rien de mal à utiliser des classes imbriquées pour ce cas-là, je te disais comment les garder, avec static. Mais tu n'es pas obligée.

Discussions similaires

  1. [XStream] Parse XML vers objet Java
    Par benjibul dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 22/06/2011, 16h09
  2. diagramme de classe vers un langage objet(JAVA )
    Par kd_amine dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 13/08/2009, 14h49
  3. Comment exporter un objet C++ vers un programme JAVA?
    Par Hamdi Hedhili dans le forum C++
    Réponses: 2
    Dernier message: 26/02/2008, 16h35
  4. [Axis] Désérialisation XML vers Objet Java
    Par jemini_fr dans le forum Services Web
    Réponses: 2
    Dernier message: 10/12/2007, 14h38

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