Usando o Jackson com Plain Old Java™ Objects (POJOs)

Os serviços RESTful podem consumir e produzir um conteúdo com o formato JavaScript Object Notation (JSON) com a biblioteca Jackson.

Sobre Esta Tarefa

Os tipos de POJO (incluindo tipos de matrizes e tipos java.util.Collection) são tipos de entidade suportadas pelo Jackson. A biblioteca Jackson está incluída no ambiente de tempo de execução desse produto. Não é necessário inserir quaisquer bibliotecas adicionais em pacotes configuráveis.

As seguintes anotações Jackson são suportadas e podem ser usadas para POJOs de anotação:
org.codehaus.jackson.annotate.JsonAnySetter
org.codehaus.jackson.annotate.JsonAutoDetect
org.codehaus.jackson.annotate.JsonClass
org.codehaus.jackson.annotate.JsonContentClass
org.codehaus.jackson.annotate.JsonCreator
org.codehaus.jackson.annotate.JsonGetter
org.codehaus.jackson.annotate.JsonIgnore
org.codehaus.jackson.annotate.JsonIgnoreProperties
org.codehaus.jackson.annotate.JsonKeyClass
org.codehaus.jackson.annotate.JsonProperty
org.codehaus.jackson.annotate.JsonPropertyOrder
org.codehaus.jackson.annotate.JsonSetter
org.codehaus.jackson.annotate.JsonSubTypes
org.codehaus.jackson.annotate.JsonSubTypes.Type
org.codehaus.jackson.annotate.JsonTypeInfo
org.codehaus.jackson.annotate.JsonTypeName
org.codehaus.jackson.annotate.JsonValue
org.codehaus.jackson.annotate.JsonWriteNullProperties
org.codehaus.jackson.map.annotate.JsonCachable
org.codehaus.jackson.map.annotate.JsonDeserialize
org.codehaus.jackson.map.annotate.JsonSerialize
org.codehaus.jackson.map.annotate.JsonTypeIdResolver
org.codehaus.jackson.map.annotate.JsonTypeResolver
org.codehaus.jackson.map.annotate.JsonView

Essas anotações podem ser usadas para obter maior controle de baixa granularidade sobre como os POJOs são convertidos para e do JSON.

Procedimento

  1. Use um POJO como um parâmetro ou tipo de retorno para seu método de recurso.
  2. Inclua uma anotação javax.ws.rs.core.Produces ou javax.ws.rs.core.Consumes com o aplicativo ou tipo de mídia JSON para seu método de recurso.

Resultados

Um recurso foi implementado que pode desserializar e serializar os dados JSON para e dos POJOs com o Jackson.

Exemplo

O seguinte exemplo ilustra um recurso que é usado para retornar uma coleção de pessoas e para processar uma saudação para uma pessoa.
public class Person {

    private String firstName;
    private String lastName;

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return this.lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}
public class Greeting {

    private String greeting;

    public String getGreeting() {
        return this.greeting;
    }

    public void setGreeting(String greeting) {
        this.greeting = greeting;
    }

}
import java.util.List;
import java.util.ArrayList;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import   javax.ws.rs.core.MediaType;

@Path("/people")
public class JacksonResource {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Person> getPersonList() {
        List<Person> personArray = new ArrayList<Person>();
        
        Person firstPerson = new Person();
        firstPerson.setFirstName("John");
        firstPerson.setLastName(“Doe”);
        personArray.add(firstPerson);
        
        Person secondPerson = new Person();
        secondPerson.setFirstName(“Fred”);
        secondPerson.setLastName("Thompson");
        personArray.add(secondPerson);
        
        return personArray;
    }
    
    @Path("/greet")
    @POST
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Greeting createGreetingForPerson(Person person) {
        String name = person.getFirstName() + “ “ + person.getLastName();
        Greeting greeting = new Greeting();
        greeting.setGreeting(“Hello “ + name);
        return greeting;
    }

}
Quando emitir uma solicitação GET para o recurso JacksonResource, um conteúdo JSON, como o seguinte fragmento de código, é retornado na resposta.
[{"firstName":"John","lastName":"Doe"},{"firstName":"Fred","lastName":"Thompson"}]
Quando emitir uma solicitação POST para o recurso JacksonResource, um conteúdo JSON, como o seguinte fragmento de código, é enviado para a solicitação e armazenado em um objeto Pessoa.
{"firstName":"John","lastName":"Doe"}
JSON content, like the following code snippet, is returned in the response.
{"greeting":"Hello John Doe"}

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_jsoncontent_pojo
Nome do arquivo: twbs_jaxrs_jsoncontent_pojo.html