Пример JSON с RESTEasy JAXB Jettison

RESTEasy использует Jettison JSON library для сопоставления объекта аннотации JAXB с JSON и из него. В этом руководстве мы покажем вам, как преобразовать аннотированный объект JAXB в формат JSON и вернуть его клиенту.

1. RESTEasy JAXB Jettison

Чтобы использовать JSON в RESTEasy , вам нужны следующие зависимости.

File: 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. JAXB XML Provider

Создать объект, аннотировать с помощью JAXB. Зачем использовать XML провайдер? Не беспокойтесь, позже вы будете использовать @ BadgerFish для преобразования его в формат 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

Чтобы вернуть формат файла JSON, аннотируйте метод сервиса с помощью @ BadgerFish и` @Produces ("application/json") `.

RESTEasy автоматически обработает преобразование 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. Демо

При запросе шаблона URI « /json/movie/get » будет возвращен следующий файл JSON.

{
    "movie":
    {
        "@year":"2011",
        "director":{
            "$":"Michael Bay"
        },
        "name":{
            "$":"Transformers: Dark of the Moon"
        }
    }
}

Изображение://wp-content/uploads/2011/07/jaxb-json-resteasy.png[результат, название = "JAXB-JSON-Resteasy", ширина = 574, высота = 328]

Скачать исходный код

Загрузите его - ссылка://wp-content/uploads/2011/07/JAX-RS-Download-JSON-JAXB-Example.zip[JAX-RS-Download-JSON-JAXB-Example.zip](7 КБ)

Рекомендации

JAXB-провайдер], ссылка://WebServices/JAX-RS/скачать-XML-файлы из-JAX-RS-с-JAXB-Resteasy/[Downlaod

XML-файл из JAX-RS]

ссылка://тег/jax-rs/[jax-rs]ссылка://тег/jaxb/[jaxb]ссылка://тег/сброс/ссылка[ссылка]ссылка://тег/Resteasy/[Resteasy]

Related