1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Deserializar um json de uma requisição http (PUT) com Jersey e Jackson

Galera estou desenvolvendo um web service Rest usando Jersey e não to conseguindo deserializar um json de uma requisição http (PUT). Ao mandar a requisição eu to recebendo a seguinte exceção:

11, 2015 6:10:57 PM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException
GRAVE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of Bean.InformativoLido out of START_ARRAY token

Esse aqui é o método que recebe a requisição na classe dos recursos:

@PUT
    @Path("/atualizaInformativo")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response atualizaInformativo(InformativoLido informativoLido){
        new Controler().atualizaInformativo(informativoLido);
        return Response.ok().build();
    }

Esse é o meu Bean:

package Bean;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class InformativoLido {

    private int idInformativo;
    private int idResonsavel;


    public int getIdInformativo() {
        return idInformativo;
    }
    public void setId_informativo(int idInformativo) {
        this.idInformativo = idInformativo;
    }
    public int getIdResonsavel() {
        return idResonsavel;
    }
    public void setId_resonsavel(int idResonsavel) {
        this.idResonsavel = idResonsavel;
    }
}

Nas minhas pesquisas para resolver o problema eu achei um exemplo que parece ser a solução:

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("c:\\user.json"), User.class);

Dessa forma é possível converter o json para um objeto Java, mas nesse exemplo o json vem de um arquivo e eu preciso pegar o json que está no corpo da requisição http (PUT). Quem puder ajudar eu agradeço muito.

  • Consegui resolver. O problema era no json que estava assim: [{"idInformativo": 6,"idResponsavel": 1}]. Tirei os [] e resolveu. :)

    Luiz Antônio de Pontes Macedo   12 de out de 2015
  • Consegui resolver. O problema era no json que estava assim: [{"idInformativo":3, "idResponsavel":1}]. Tirei os [] e o meu recurso conseguiu deserializar.

    Luiz Antônio de Pontes Macedo   12 de out de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jersey rest java java-ee webservices ou faça a sua própria pergunta.