Implementando uma Representação JSON de um Recurso com os Objetos Anotados Jackson e JAXB

É possível processar as solicitações e respostas do JavaScript Object Notation (JSON) com os objetos anotados do Java™ Architecture for XML Binding (JAXB) e com Jackson. Jackson é o processador JSON padrão no WebSphere Application Server. Por padrão, ele é incluído no ambiente de tempo de execução JAX-RS, portanto, não é necessário configurar o Jackson.

Sobre Esta Tarefa

Essa tarefa fornece instruções para processar as solicitações e respostas JSON com os objetos anotados do JAXB e Jackson.

Procedimento

  1. Crie o método de recurso. Para que o método de recurso retorne o conteúdo JSON, retorne uma instância de uma classe JAXB diretamente ou retorne um objeto javax.ws.rs.core.Response com um objeto JAXB como a entidade de resposta. Você também deve incluir uma anotação @Produces("application/json") ou configurar o cabeçalho de Tipo de Conteúdo no seu objeto Resposta para ser "application/json". O exemplo a seguir ilustra métodos de retorno JSON simples para a classe JAXB BookList:
    @GET
    @Produces("application/json")
    public BookList getBookList() {
        BookList list = /* get a book list */
        return list;
    }
    ou
    @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. Se desejar retornar ambos os objetos XML e JSON, será possível reusar o mesmo método com modificação mínima. Você deve especificar "application/xml", "application/json" e "text/xml" na anotação @Produces. O exemplo a seguir ilustra métodos de retorno JSON simples que retorna um objeto BookList para a classe JAXB BookList:
    @GET
    @Produces("application/json", "application/xml", "text/xml")
    public BookList getBookList() {
        BookList list = /* get a book list */
        return list;
    }
    O exemplo a seguir ilustra um método de retorno JSON simples que retorna um objeto javax.ws.rs.core.Response para a classe 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();
    }
    A negociação de conteúdo por meio do cabeçalho HTTP Aceitação da solicitação do cliente ajuda a determinar se uma representação JSON ou XML é retornada pelo método de recurso. Consulte a negociação de conteúdo para obter mais informações. Ao reusar os objetos anotados JAXB, é possível diminuir o tempo de desenvolvimento para servir ambos JSON e XML a partir do mesmo código. Reusar o mesmo código de modelo pode ser benéfico se a saída formatada JSON ou XML específica não for necessária.

    Se você requerer saída XML e JSON específica e não puder reusar as mesmas classes anotadas JAXB, uma maneira de resolver o problema é usar dois métodos de recursos diferentes. O método de recurso JSON deve ser anotado com uma anotação @Produces("application/json") e o método de recurso XML deve ser anotado com uma anotação @Produces("application/xml", "text/xml").

Resultados

Uma representação JSON foi retornada com as classes JAXB anotadas por meio do processador JSON Jackson.


Í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_jaxb_annotated_objs
Nome do arquivo: twbs_jaxrs_jsoncontent_jaxb_annotated_objs.html