Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
718 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  JAXB JSON extends class

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

JAXB JSON extends class

n°2187014
kingstone5​9
Posté le 22-04-2013 à 17:02:42  profilanswer
 

Bonjour,
 
je recontre une probleme plutot etrange.
Je suis entrain de dev un Jeu Mobile et je m'occupe de la partie serveur, WebService avec Jersey.
Pour repondre a mon client j'utilise du JSON avec JAXB voici mon modele de reponse
 
Une class qui contient un code est la reponse en fonction de la demande

Code :
  1. @XmlRootElement
  2. public class Response {
  3. private int code;
  4. @XmlElement(name="content" )
  5. private AbsResponse rAbs;
  6. }


 
Une class vide

Code :
  1. @XmlRootElement
  2. public abstract class AbsResponse {
  3. }


 
Une class qui correspond a ma reponse specifique

Code :
  1. @XmlRootElement
  2. public class ResponseLogin extends AbsResponse {
  3. public ResponseLogin() {
  4. }
  5. }


 
J'utilise la class vide car j'ai plein de réponse du type ResponseLogin , ResponseGame etc...
 
1 - Alors le problème est que avec le POJO d'activer le json produit est nickel pas de soucis mais sans (juste JAXB) ma AbsResponse est toujours vide.
Je veux utiliser JAXB car avec POJO je n'ai pas trouver comment exclure des variables d'une class lors de la production du json.
 
2 - Existe-t-il une autre façon de faire avec mes réponses pour éviter la class vide.
 
 
Si cela n'est pas clair dit le moi.
 
Merci


Message édité par kingstone59 le 22-04-2013 à 17:03:21
mood
Publicité
Posté le 22-04-2013 à 17:02:42  profilanswer
 

n°2187414
LeRiton
Posté le 24-04-2013 à 15:54:01  profilanswer
 

C'est pas clair :D
 
Je comprend pas "avec le POJO d'activer" et "Je veux utiliser JAXB car avec POJO".
 
En dehors de ça :
- tu peux virer le @XmlRootElement de ta classe abstraite ;
- pour exclure des propriétés de classe de la production JAXB, on les annote avec @XmlTransient ;
- ça se fait généralement sur le getter plutôt que la propriété, j'ai déjà rencontré des bugs bizarres sans ça ;
- d'ailleurs, t'as bien les getters/setters pour les champs en question ?
- comment tu déploie ton module jersey ? Tu déclares bien le support JSon pour Jersey ? Serveur d'application ? Si dans ton classpath tu as des libs qui viennent en conflit avec ce qu'embarque Jersey, ça peut tiquer aussi.
 

n°2187419
kingstone5​9
Posté le 24-04-2013 à 16:33:09  profilanswer
 

Merci pour ta réponse.
 
Je vais tenter de mieux détaillé les points encore flou.
 
En fait je me suis en emmêlé les pinceaux.
Donc avec POJO (com.sun.jersey.api.json.POJOMappingFeature) Jersey utilise la lib Jackson.  <- @XmlTransient ne marché pas (mais va marché grave a toi)
Et donc sans POJO, c'est du JAXB. <-  ma AbsResponse est toujours vide
J'espere avoir compris cette fois.
 
pour te répondre :
 - tu peux virer le @XmlRootElement de ta classe abstraite ;
Cela ne resoud pas mon probleme avec JAXB
 
- pour exclure des propriétés de classe de la production JAXB, on les annote avec @XmlTransient ;
C’était déjà le cas mais cela ne marché pas
- ça se fait généralement sur le getter plutôt que la propriété, j'ai déjà rencontré des bugs bizarres sans ça ;  
Merci je n'y avait pas pensé mais ça marche nickel sur le getter !!!!!!!!! ma variable est bien exclu du JSon
 
- d'ailleurs, t'as bien les getters/setters pour les champs en question ?  
Oui
 
- comment tu déploie ton module jersey ? Tu déclares bien le support JSon pour Jersey ? Serveur d'application ? Si dans ton classpath tu as des libs qui viennent en conflit avec ce qu'embarque Jersey, ça peut tiquer aussi.  
Alors mon jersey tourne sur Jetty (google app engine).
Je ne sais pas ou déclares le support JSon pour Jersey. Mais j'ai bien du JSon de produit pas de soucis.
Je ne pense pas avoir de conflit de libs, j'en ai déjà bien chier pour tout faire marcher
 
 
Déjà un grand problème de résolut grâce au @XmlTransient sur getter !! Merci beaucoup.
 
Mais pour mon problème avec JAXB qui arrive pas a produire le JSon voulu je ne trouve toujours pas.

n°2187430
LeRiton
Posté le 24-04-2013 à 17:42:52  profilanswer
 

kingstone59 a écrit :


Je ne sais pas ou déclares le support JSon pour Jersey. Mais j'ai bien du JSon de produit pas de soucis.
Je ne pense pas avoir de conflit de libs, j'en ai déjà bien chier pour tout faire marcher


 
Il te faut un certain nombre de libs en plus de jersey-core pour que le support JAXB fonctionne, voir ici : https://jersey.java.net/nonav/docum [...] ml#d4e1718
 
 

n°2187953
kingstone5​9
Posté le 29-04-2013 à 10:58:57  profilanswer
 

Juste stax-api-1.0-2.jar n’était pas présent mais cela n'aide pas.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  JAXB JSON extends class

 

Sujets relatifs
sauvegarder en session une action .Class Jquery[Android] Parser un fichier JSON
Problème de class introuvable à la générationClass => comment manipuler un array ?
Besoin de conseil et d'info sur le parsing de flux jsonConvertir un élement XML vers JSON
JSON - Récupérer le dernier tweet - InstabilitéOu déclarer une class qui va servir à plusieurs endroits ?
Différence de chargement d'une API entre exécution class et JarJSON php vers jquery Ajax problem
Plus de sujets relatifs à : JAXB JSON extends class


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR