Exemple JSON avec RESTEasy JAXB Jettison

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"
        }
    }
}

résultat

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

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]