Estoy utilizando esta cosa genial que Spring ofrece: Spring RESTWebService (Version of spring is 3). Si puedo acceder a la URL desde el navegador puedo ver la respuesta JSON, pero desde un extremo de cliente (aplicación Android) iIreceive este mensaje de error:No se puede deserializar la instancia del objeto del token START_ARRAY en Spring 3 REST Webservice
Caused by: org.springframework.web.client.ResourceAccessException:
I/O error: Can not deserialize instance of MyObject out of START_ARRAY token
at [Source: org.apache.http.conn.EofSensorInputS[email protected]; line: 1,
column: 1]; nested exception is org.codehaus.jackson.map.JsonMappingException:
Can not deserialize instance of MyObject out of START_ARRAY token
at [Source: [email protected]; line: 1, column: 1]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:466)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:414)
at org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:234)
at com.be.android.locateconsultants.resources.AsyncTaskRESTServiceCaller.doInBackground(AsyncTaskRESTServiceCaller.java:43)
at com.be.android.locateconsultants.resources.AsyncTaskRESTServiceCaller.doInBackground(AsyncTaskRESTServiceCaller.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:252)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 4 more
Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize
instance of MyObject out of START_ARRAY token
at [Source: [email protected]; line: 1, column: 1]
at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:198)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeUsingCreator(BeanDeserializer.java:565)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:365)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2395)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1655)
at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.readInternal(MappingJacksonHttpMessageConverter.java:135)
at org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:154)
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:74)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:632)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:618)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:459)
... 10 more
estructura MiObjeto es el mismo que el de la aplicación del lado del servidor.
he tratado de solicitar al servidor de esta manera:
final String url = ".....";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<Consultant> responseEntity = restTemplate.getForEntity(
url, Consultant.class);
O así:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(headers);
ResponseEntity<MyObject> response = restTemplate
.exchange("....",HttpMethod.GET, entity, MyObject.class);
System.out.println("RESPONSE: " + response.getBody());
Pero sigue siendo el mismo error que el anterior. No puedo entender lo que me falta en este punto, cualquier idea o sugerencia sería genial. Gracias.
¿Cuál es la estructura json, cómo se ve MyObject. No hay suficiente información. La única conjetura que veo es que estás obteniendo una matriz del servidor e intentando asignarla a MyObject. – pawelzieba
en el cliente: 'public class Consultant { \t private int id; \t private String firstName; \t private String lastName; \t private String phoneNumber; \t private String jobName; \t private String workAddress; \t privado Fecha de creación; \t private String email; getters y setters} ' –
y la respuesta json es esta:' [{"id": 1, "firstName": "first name", "lastName": "lastname", "jobName": "programmer", "created ": 1328133600000," email ":" [email protected] "," workAddress ":" test "," phoneNumber ":" 0000 "}, {...}, {..}] ' –