Implementación de una representación JSON de un recurso con objetos anotados Jackson y JAXB

Puede procesar solicitudes y respuestas JSON (JavaScript Object Notation) con objetos anotados JAXB (Java™ Architecture for XML Binding) y con Jackson. Jackson es el procesador JSON predeterminado en WebSphere Application Server. De forma predeterminada, se incluye en el entorno de ejecución de JAX-RS, de forma que no es necesario configurar Jackson.

Acerca de esta tarea

Esta tarea proporciona instrucciones para el proceso de solicitudes y respuestas JSON con objetos anotados JAXB y Jackson.

Procedimiento

  1. Cree un método de recursos. Para que el método de recursos devuelva contenido JSON, devuelva una instancia de una clase JAXB directamente o devuelva un objeto javax.ws.rs.core.Response con un objeto JAXB como entidad de respuesta. También debe añadir una anotación @Produces("application/json") o establecer la cabecera Content-Type en el objeto Response para que sea "application/json". En el ejemplo siguiente se ilustran métodos simples de retorno JSON para la clase JAXB BookList:
    @GET
    @Produces("application/json")
    public BookList getBookList() {
        BookList list = /* get a book list */
        return list;
    }
    o
    @GET
    @Produces("application/json")
    public javax.ws.rs.core.Response getBookList() {
        BookList list = /* get a book list */
        return Response.ok(list).type(MediaType.APPLICATION_JSON_TYPE).build();
    }
  2. Si desea devolver objetos XML y JSON, puede reutilizar el mismo método con una pequeña modificación. Debe especificar "application/xml", "application/json" y "text/xml" en la anotación @Produces. En el ejemplo siguiente se muestra un método de retorno JSON simple que devuelve un objeto BookList para la clase JAXB BookList:
    @GET
    @Produces("application/json", "application/xml", "text/xml")
    public BookList getBookList() {
        BookList list = /* get a book list */
        return list;
    }
    En el ejemplo siguiente se muestra un método de retorno JSON simple que devuelve un objeto javax.ws.rs.core.Response para la clase JAXB BookList:
    @GET
    @Produces("application/json", "application/xml", "text/xml")
    public javax.ws.rs.core.Response getBookList() {
        BookList list = /* get a book list */
        return Response.ok(list).build();
    }
    La negociación de contenido mediante la cabecera HTTP Accept de la solicitud del cliente determina si el método de recursos devuelve una representación JSON o XML. Consulte la información sobre la negociación de contenido para obtener más información. Reutilizando los objetos anotados JAXB, puede acortar el tiempo de desarrollo, utilizando el mismo código tanto para JSON como para XML. Puede ser bueno reutilizar el mismo código del ejemplo si no se requiere una salida JSON o XML con un formato específico.

    Si necesita una salida XML y JSON específica y no puede reutilizar las mismas clases anotadas JAXB, una forma de resolver el problema es utilizar dos métodos de recursos distintos. El método de recursos JSON debe anotarse con una anotación @Produces("application/json") y el método de recursos XML debe anotarse con una anotación @Produces("application/xml", "text/xml").

Resultados

Ha vuelto una representación JSON con clases anotadas JAXB a través del procesador de JSON Jackson.


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_jaxb_annotated_objs
File name: twbs_jaxrs_jsoncontent_jaxb_annotated_objs.html