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 :

[Débutant] Transformation JSON a objet JAVA avec Jackson.


Sujet :

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

  1. #1
    Membre éprouvé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Par défaut [Débutant] Transformation JSON a objet JAVA avec Jackson.
    Bonjour à tous,
    Je me suis assuré (avec un bon validateur en ligne) que la syntaxe du JSON que je reçois est syntaxiquement correcte, mais j'ai toujours le message d'erreur suivant. Ça peut être dû à quoi ? (je ne vois pas le problème).

    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
     
    org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class ca.hq.ireq.entity.JsonDeClasse]: can not instantiate from JSON object (need to add/enable type information?)
     at [Source: java.io.StringReader@c8e2169; line: 1, column: 2]
    	at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
    	at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:746)
    	at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:683)
    	at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
    	at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
    	at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863)
    	at ca.hq.ireq.beans.manager.impl.FacadeRdfService.create(FacadeRdfService.java:51)
    	at ca.hq.ireq.beans.service.RdfService.create(RdfService.java:44)
    	at ca.hq.ireq.beans.service.RdfService$$OwbNormalScopeProxy0.create(ca/hq/ireq/beans/service/RdfService.java)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at org.apache.openejb.server.cxf.rs.PojoInvoker.performInvocation(PojoInvoker.java:43)
    	at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
    	at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:165)
    	at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:89)
    	at org.apache.openejb.server.cxf.rs.AutoJAXRSInvoker.invoke(AutoJAXRSInvoker.java:68)
    	at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:57)
    	at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:93)
    	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
    	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:240)
    	at org.apache.openejb.server.cxf.rs.CxfRsHttpListener.onMessage(CxfRsHttpListener.java:187)
    	at org.apache.openejb.server.rest.RsServlet.service(RsServlet.java:53)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    	at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Thread.java:745)
    J'utilise Jackson pour faire cette transformation. Quelqu'un pourrait me donner quelque indication pour résoudre ce problème ?

    Merci

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Hello,

    Ça devrait pouvoir se faire. Tu peux nous lire la première ligne que tu viens de citer ? (Et le cas échéant, montrer du code qui semble dire que cette ligne se trompe ?)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éprouvé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Ça devrait pouvoir se faire. Tu peux nous lire la première ligne que tu viens de citer ? (Et le cas échéant, montrer du code qui semble dire que cette ligne se trompe ?)
    voilà mon 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
    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
     
    {
        "parent": "http://monSite.qc.ca/datest#MIDATDEV/TRANSFORMATEUR_XFO_EVA_74927",
        "classe": [
            {
                "classes": "http://monSite.qc.ca/schema/datest#MIDATDEV_INTERVENTION",
                "predicates": "http://monSite.qc.ca/schema/datest#MIDATDEV_INTERVENTION_TRANSFORMATEUR_ID",
                "label": "INTERVENTION",
                "rac": {
                    "parent": "http://monSite.qc.ca/datest#MIDATDEV/TRANSFORMATEUR_XFO_EVA_74927"
                }
            }
        ],
        "instances": [],
        "props": [
            {
                "prop": "http://monSite.qc.ca/schema/datest#MIDATDEV_INTERVENTION_DATE_INTERVENTION",
                "type": "http://www.w3.org/2001/XMLSchema#dateTime",
                "label": "DATE",
                "pcdfextJs": "datefield",
                "rac": {
                    "parent": "http://monSite.qc.ca/datest#MIDATDEV/TRANSFORMATEUR_XFO_EVA_74927"
                }
            },
            {
                "prop": "http://monSite.qc.ca/schema/datest#MIDATDEV_INTERVENTION_ID",
                "type": "http://www.w3.org/2001/XMLSchema#string",
                "label": "INTERVENTION_ID",
                "pcdfextJs": "textfield",
                "rac": {
                    "parent": "http://monSite.qc.ca/datest#MIDATDEV/TRANSFORMATEUR_XFO_EVA_74927"
                }
            },
            {
                "prop": "http://monSite.qc.ca/schema/datest#MIDATDEV_INTERVENTION_INTERVENANT",
                "type": "http://www.w3.org/2001/XMLSchema#string",
                "label": "INTERVENANT",
                "pcdfextJs": "comboboxCT",
                "rac": {
                    "parent": "http://monSite.qc.ca/datest#MIDATDEV/TRANSFORMATEUR_XFO_EVA_74927"
                }
            },
            {
                "prop": "http://monSite.qc.ca/schema/datest#MIDATDEV_INTERVENTION_RESUME_INTERVENTION",
                "type": "http://www.w3.org/2001/XMLSchema#string",
                "label": "RESUME",
                "pcdfextJs": "textfield",
                "rac": {
                    "parent": "http://monSite.qc.ca/datest#MIDATDEV/TRANSFORMATEUR_XFO_EVA_74927"
                }
            },
            {
                "prop": "http://monSite.qc.ca/schema/datest#MIDATDEV_INTERVENTION_TRANSFORMATEUR_ID",
                "type": "http://monSite.qc.ca/schema/datest#MIDATDEV_TRANSFORMATEUR",
                "label": "TRANSFO_ID",
                "pcdfextJs": "combobox",
                "rac": {
                    "parent": "http://monSite.qc.ca/datest#MIDATDEV/TRANSFORMATEUR_XFO_EVA_74927"
                }
            },
            {
                "prop": "http://monSite.qc.ca/schema/datest#MIDATDEV_INTERVENTION_TYPE_INTERVENTION",
                "type": "http://www.w3.org/2001/XMLSchema#string",
                "label": "TYPE",
                "pcdfextJs": "comboboxCT",
                "rac": {
                    "parent": "http://monSite.qc.ca/datest#MIDATDEV/TRANSFORMATEUR_XFO_EVA_74927"
                }
            }
        ]
    }
    Le psedo code qui la consomme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
           ObjectMapper mapper = new ObjectMapper();
            JsonDeClasse pouit = mapper.readValue(MonJson, JsonDeClasse.class);
    La classe JsonDeClasse.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class JsonDeClasse {
     
     
        private String parent;                                      
        private ThreeStringsClassPredLabel classe;         
        private List<ThreeStringsPropTypeLabel> props; 
        private List<Instances> instances;
     
      //+ les Getter et Setter
     
    }

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Tu veux dire que la classe JsonDeClasse n'a aucun constructeur ? Zéro, peau de balle, niet ? Seulement des variables membres et des méthodes ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éprouvé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Tu veux dire que la classe JsonDeClasse n'a aucun constructeur ? Zéro, peau de balle, niet ? Seulement des variables membres et des méthodes ?
    Oui, le constructeur était un des problèmes, mais j'ai un autre problème dans la classe JsonDeClasse : l’attribut "classe" est une simple propriété dans cette classe, mais dans le JSON, c'est une liste de propriétés de type "classe". Comment résoudre mon problème sans changer la classe JsonDeClasse ?

    Merci

Discussions similaires

  1. Parser JSON -> Java avec Jackson
    Par ProAccount dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 28/11/2012, 18h04
  2. [AJAX] Comment recuperer la propriété d'un objet Java avec XmlHttpRequest ?
    Par framus.class dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/02/2008, 09h58
  3. comment utiliser des objets java avec ireport
    Par Invité dans le forum iReport
    Réponses: 0
    Dernier message: 28/07/2007, 23h18
  4. sauvegarder un objet java avec XML
    Par dark2 dans le forum Format d'échange (XML, JSON...)
    Réponses: 13
    Dernier message: 07/02/2007, 13h10
  5. [Plugin][Débutant] Lancement d'une appli Java avec un plugin
    Par antares24 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 29/07/2004, 14h18

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