É 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
- 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();
}
- 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.