Comment sérialiser Java primitives à l'aide de Maillot de REPOS
Dans mon application j'utilise Maillot de REPOS pour sérialiser des objets complexes. Cela fonctionne très bien. Mais il y a un peu de méthode, qui se contente de renvoyer un int ou un booléen.
Jersey ne peut pas gérer les types primitifs (à ma connaissance), probablement parce qu'ils ne sont annotées et Jersey n'a pas de défaut d'annotation pour eux. J'ai travaillé autour de ce par la création de types complexes comme un RestBoolean ou RestInteger, il suffit de maintenir un int ou valeur booléenne et avoir les annotations.
N'est-il pas un moyen plus simple que d'écrire ces objets conteneur?
JAX-RS/Maillot ne prend pas en charge la sérialisation des types primitifs ou même les types wrapper Entier, Booléen, etc. Autant que je sache, l'approche que vous avez pris semble être le seul moyen.
Bon, je vous remercie!
Bon, je vous remercie!
OriginalL'auteur Olvagor | 2010-04-13
Vous devez vous connecter pour publier un commentaire.
Ont un coup d'oeil à Genson.Il m'a beaucoup aidé avec un problème similaire.Avec Genson vous pourriez utiliser des génériques, comme int,boolean, des listes et ainsi de suite...Voici un exemple rapide.
Cela produira un JSON valide la sorcière peut être récupéré très simple comme ceci:
Vous verrez que Genson va vous aider à décoder le JSON sur le côté client aussi et la sortie de la classe correcte pour chaque.
OriginalL'auteur mvlupan
Êtes-vous à la rédaction d'un service ou d'un client? Dans la fin des choses, il vous suffit d'écrire un MessageBodyWriter pour sérialiser un flux de données à un objet Java pour votre types. Dans mon cas d'utilisation, les services que je suis en train d'écrire la sortie JSON ou XML, et dans le fichier XML, je viens de jeter un JAXB annotation sur le haut de mes classes et je suis fait.
Avez-vous regardé le Maillot guide de l'Utilisateur sur cette question?
3.6. Ajout du support pour de nouvelles représentations
OriginalL'auteur Nick Klauer
En fait votre meilleur pari est d'écrire une coutume ContextResolver Fournisseur comme la suivante qui utilise naturel bâtiment de JSON.
La seule chose de spécial à noter, c'est la YourSpecialBean.class dans la Classe[]. Ceci définit un tableau de types de classe que ce fournisseur de résoudre naturellement.
OriginalL'auteur Alex Winston
Dire Maillot de générer un format JSON documents (naturel ou json). J'ai utiliser la même classe pour le repos de l'app et JAXBContext de résolution, a jugé le plus propre de l'encapsulation.
Meilleur programmeur pourrait mettre en œuvre de l'aide pour effectuer une itération .les fichiers de classe et la liste des cours adaptés automatiquement par identifiant @Annotation des balises. Je ne sais pas comment faire il d'exécution dans le cadre d'un code source.
Ces deux liens ont été utile d'étudier cette extra java jargon. Je ne sais pas pourquoi il n'y a pas de Maillot de paramètre à prendre tout simplement travailler hors de la boîte.
WEB-INF/web.xml (extrait):
com.myapp.rest.RESTApplication.java
Classes MyBean1,MyBean2 sont de simples objets java et MyBeansResource classe est celle avec @Chemin reste des fonctions. Il n'y a rien de spécial en attendent standard jaxp @Annotations ici et là. Après ce java jargon JSON documents ont
- Je utiliser l'environnement suivant
jersey-archive.zip eu plus asm-3.1.jar fichier, fonctionne probablement très bien, mais chapter_deps.html les liens vers un fichier plus récent. Voir le lien à la liste en haut.
Modifier
J'ai trouvé un excellent(rapide, léger à seulement 15 KO) annotation outil de découverte. Voir ce post sur comment je l'ai découverte automatique des types à l'exécution et n'ont plus besoin de modifier RESTApplication à chaque fois de nouvelles java(jaxb) l'ajout de bean.
https://github.com/rmuller/infomas-asl/issues/7
OriginalL'auteur Whome
J'ai eu le même problème aujourd'hui et ne pas abandonner jusqu'à ce que j'ai trouvé une très bonne solution appropriée. Je ne peux pas mettre à jour le maillot de la bibliothèque de 1.1.5 c'est un Héritage du Système. Mon Repos", le Service retourne une Liste et ils doivent suivre ces règles.
Début de facile à impossible.
3) aujourd'hui rien de normal JSON Cartographie
2) Inscrivez-vous JAXBContextResolver comme suit
1) L'approche suivante ne fonctionne que pour les Collections$EmptyList classe. Pouvez-vous trouver un moyen pour la rendre générale pour toutes les Collections qu'ils sont vides. Peut-code de traiter avec EmptyList.
OriginalL'auteur Frank Ittermann
Je viens de découvrir que le retour d'un type primitif avec Jersey est problématique. J'ai décidé de Chaîne de retour à la place. Peut-être que ce n'est pas propre, mais je ne pense pas que c'est trop sale. Le client Java, qui est écrit par le même auteur du serveur, la plupart du temps, peut envelopper une telle chaîne de valeur de retour et la convertir en int. Les Clients écrits dans d'autres langues doivent être conscients des types de retour d'une quelconque façon.
Définition RestInteger, RestBoolean peut être une autre option, mais il est plus lourd et que je vois trop peu d'avantages à être attractif.
Ou peut-être ai-je raté quelque chose d'important ici?
OriginalL'auteur zakmck