Gostaria de compartilhar a solução de um erro que tive a poucos dias, e que me fez perder algumas horas...
Quando eu tentava converter uma lista no formato JSON em objeto, usando a api Jersey, era apresentado um erro. O formato da mensagem JSON que retornava era:
[{"id":2,"descricao":"RESTAURANTE"},{"id":3,"descricao":"MERCEARIA"}]
O erro era:
[com.sun.istack.SAXParseException2; lineNumber: 0; columnNumber: 0; unexpected element (uri:"", local:"id"). Expected elements are <{}categoria>]
Ou também:
XMLStreamException: JSON expression can not be empty
A configuração do cliente era:
ClientConfig config = new DefaultClientConfig(); client = Client.create(config); client.addFilter(new LoggingFilter()); webResource = client.resource(BASE_URI).path(resourceName);
E forma de busca do servidor era:
WebResource resource = webResource; ClientResponse response = resource.path(java.text.MessageFormat.format("{0}/{1}", new Object[]{max, first})).getRequestBuilder().accept(MediaType.APPLICATION_JSON_TYPE).get(ClientResponse.class); GenericType> genericType = new GenericType
>(){}; List
categorias = response.getEntity(genericType);
Então, após algum tempo de pesquisa, descobri que faltava uma linha de código na configuração do cliente:
config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,Boolean.TRUE);
E pronto, após adicionar essa configuração, tudo funcionou perfeitamente. Espero que ajude!
Até a próxima!
Nenhum comentário:
Postar um comentário