L'accès Jackson Objet Mappeur dans RestEasy
J'ai été demandé pour embellir par défaut Jackson JSON en sortant d'une RestEasy point de terminaison. J'ai fait quelques recherches sur Jackson, et a écrit une partie autonome de code pour être en mesure de supprimer les valeurs null, personnaliser les formats de données, etc. Maintenant, le défi est d'injecter du code dans RestEasy de la sérialisation JSON.
À en juger par les messages du forum, c'est trivial au Printemps, cependant, ne semble pas être le cas dans RestEasy. J'ai écrit un ContextResolver et configuré comme resteasy.fournisseur de contexte params dans web.xml (sur Tomcat), mais qui empêche la webapp de chargement sur Tomcat.
Maintenant je suis en train d'étendre javax.ws.rs.de base.Demande et fournir une ContextResolver mais sans faire de progrès. Est-ce normal, quelqu'un a fait cela? Toute aide est grandement appréciée.
- Ok, j'ai été en mesure de le faire par écrit une coutume JacksonJsonProvider basé sur le wiki.fasterxml.com/JacksonFAQJaxRs de l'entrée.Le code est comme suit -
Vous devez vous connecter pour publier un commentaire.
Ok,j'ai tout compris, j'ai été capable de le faire par écrit une coutume JacksonJsonProvider basé sur la Jackson FAQ: JAX-RS.Le code est comme suit:
<context-param> <param-name>resteasy.providers</param-name> <param-value>com.package.JsonProvider</param-value> </context-param>
ObjectMapper
issus d'une bibliothèque externe et assurez-vous de ma propre ObjectMapper est utilisé (en remplaçantlocateMapper
méthode de retour pour mon ObjectMapper).J'ai trouvé une jolie manière de modifier le Jackson SerializationConfig - vous pouvez intercepter les ObjectMapper création en utilisant un JAX-RS ContextResolver.
Vous devez vous inscrire auprès de RESTEasy dans l'une des façons suivantes:
Référence: RESTEasy docs
Référence: Nicklas Karlsson sur le JBoss forums
Veuillez noter que cela fonctionne avec RESTEasy 2.3.2 livré avec un module dans JBoss 7.1.1.Finale, mais ne semble pas fonctionner avec RESTEasy 3.0-beta5.
Fournisseur pour Jackson
ObjectMapper
devrait être la norme de JAX-RS façon de le faire (fonctionne avec Jersey), donc il semble que le chemin à parcourir avec RESTeasy ainsi.Si vous êtes à l'aide de la Jackson2 fournisseur que vous avez besoin de faire quelque chose de légèrement différent de la réponse précédente. Cet exemple sera jolie impression de la sortie par défaut
et l'enregistrer dans votre web-xml, si vous n'avez pas autoregister sur, l'ajouter à votre resteasy.les fournisseurs de context-param
J'ai eu beaucoup de travail pour l'enregistrer dans mon application, même à la suite de l'astuce à utiliser context-param une fois que je suis en utilisant le printemps de démarrage et n'ont pas web.xml, voici ce que j'ai fait
Fournisseur personnalisé
En vous inscrivant sur demande
META-INF/services/javax.ws.rs.ext.Les fournisseurs de
© RESTEasy Guide De L'Utilisateur.
Ce n'est pas une solution globale, mais vous pouvez mettre l'annotation sur les classes trop.