2011-08-04 12 views
15

Estoy usando las clases http de Apache para llamar a un servicio web que devuelve un objeto JSON en el cuerpo de la respuesta. Tengo una clase Java anotada de Jackson mapeada al objeto JSON. Quiero hacer algo así, pero google no ha encontrado el texto correcto.¿Cómo deserializar el objeto JSON de HttpResponse usando las anotaciones de Jackson?

String url = hostName + uri; 
    HttpGet httpGet = new HttpGet(url); 
    HttpResponse response = httpclient.execute(httpGet); 
    MyObject myObject = (MyObject)response.getEntity().getContent(); 
+0

La lectura de la documentación ayuda: http://wiki.fasterxml.com/JacksonInFiveMinutes. –

+0

¿este HttpGet y HttpResponse es una llamada asíncrona o no? : D – gumuruh

Respuesta

36

Tienes que utilizar el ObjectMapper:

MyObject myObject = objectMapper.readValue(response.getEntity().getContent(), MyObject.class); 

(una instancia de objeto asignador puede ser reutilizado, por lo que no hay necesidad de crear uno nuevo para cada deserialización)

+0

Ah, gracias. No estaba claro desde el documento de Jackson. – MebAlone

+0

Todos los métodos de Jackson tienen la forma 'readValue (fuente, tipo)', por lo que sigue el patrón. Y al usar IDE, la autocompleción ayuda mucho mostrando posibilidades (si no, necesita verificar javadocs) – StaxMan

Cuestiones relacionadas