RESTEasy utilise la bibliothèque Jettison JSON pour mapper un objet d’annotation JAXB vers et à partir de JSON. Dans ce didacticiel, nous vous montrons comment convertir un objet annoté JAXB au format JSON et le renvoyer au client.
1. RESTEasy JAXB Jettison
Pour utiliser JSON dans RESTEasy , vous avez besoin des dépendances suivantes.
Fichier: pom.xml
<repositories> <repository> <id>JBoss repository</id> <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>2.2.1.GA</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxb-provider</artifactId> <version>2.2.0.GA</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jettison-provider</artifactId> <version>2.2.0.GA</version> </dependency> </dependencies>
2. Fournisseur XML JAXB
Créez un objet, annotez avec JAXB. Pourquoi utiliser un fournisseur XML? Pas de panique, vous utiliserez ensuite @ @ BadgerFish pour le convertir au format JSON.
package com.mkyong.rest; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "movie") public class Movie { String name; String director; int year; @XmlElement public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement public String getDirector() { return director; } public void setDirector(String director) { this.director = director; } @XmlAttribute public int getYear() { return year; } public void setYear(int year) { this.year = year; } }
3. JAX-RS
Pour renvoyer un format de fichier JSON, annotez la méthode de service avec
@ BadgerFish
et` @Produces ("application/json") `.
RESTEasy gérera automatiquement la conversion JSON.
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import org.jboss.resteasy.annotations.providers.jaxb.json.BadgerFish; @Path("/json/movie") public class JSONService { @BadgerFish @GET @Path("/get") @Produces("application/json") public Movie getMovieInJSON() { Movie movie = new Movie(); movie.setName("Transformers: Dark of the Moon"); movie.setDirector("Michael Bay"); movie.setYear(2011); return movie; } }
4. Démo
Lorsque le modèle d’URI “ /json/movie/get ” est demandé, le fichier JSON suivant est renvoyé.
{ "movie": { "@year":"2011", "director":{ "$":"Michael Bay" }, "name":{ "$":"Transformers: Dark of the Moon" } } }
Télécharger le code source
Téléchargez-le - lien://wp-content/uploads/2011/07/JAX-RS-Download-JSON-JAXB-Example.zip[JAX-RS-Download-JSON-JAXB-Example.zip](7 Ko)
Références
-
http://docs.jboss.org/resteasy/docs/2.2.1.GA/userguide/html/Built in JAXB__providers.html[RESTEasy
Fournisseur JAXB]. lien://services web/jax-rs/fichier-téléchargement-XML-de-jax-rs-avec-jaxb-resteasy/
Fichier XML de JAX-RS]
lien://tag/jax-rs/[jax-rs]lien://tag/jaxb/[jaxb]lien://tag/jettison/[jettison]lien://tag/json/[json]lien://tag/resteasy/[resteasy]