Utilización de Jackson con objetos POJO (plain old Java™ objects)

Los servicios RESTful pueden consumir y producir contenido con el formato JSON (JavaScript Object Notation) con la biblioteca Jackson.

Acerca de esta tarea

Los tipos POJO (incluyendo los tipos de matriz y los tipos java.util.Collection) son tipos de entidad soportados por Jackson. La biblioteca Jackson se incluye en el entorno de ejecución de este producto. No es necesario empaquetar las bibliotecas adicionales.

Las anotaciones Jackson siguientes están soportadas y se pueden utilizar para POJOs de anotación:
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

Estas anotaciones pueden utilizarse para obtener un control más detallado sobre cómo se convierten los POJOs a JSON y viceversa.

Procedimiento

  1. Utilizar un objeto POJO como parámetro o tipo de retorno del método de recurso.
  2. Añada una anotación javax.ws.rs.core.Produces o javax.ws.rs.core.Consumes con el tipo de soporte JSON o la aplicación en el método de recursos.

Resultados

Ha implementado un recurso que puede desclasificar y clasificar datos JSON de y hacia objetos POJO con Jackson.

Ejemplo

El ejemplo siguiente ilustra un recurso que se utiliza para devolver una recopilación de personas y para procesar un salido de una persona.
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;
    }

}
Cuando se emite una solicitud GET al recurso JacksonResource, en la respuesta se devuelve contenido JSON, parecido al siguiente fragmento de código.
[{"firstName":"John","lastName":"Doe"},{"firstName":"Fred","lastName":"Thompson"}]
Cuando se emite una solicitud POST a JacksonResource, en la solicitud se envía contenido JSON, parecido al siguiente fragmento de código, y se almacena en el objeto Person.
{"firstName":"John","lastName":"Doe"}
En la
respuesta se devuelve contenido JSON, parecido al siguiente fragmento de
código. {"greeting":"Hello John Doe"}

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_jsoncontent_pojo
File name: twbs_jaxrs_jsoncontent_pojo.html