Gson de Json deserializa genéricos
Mientras trabajaba en una aplicación de Android, me encontré con un problema cuando quería crear un método genérico definitivo para enviar solicitudes HTTP (con loopj) y deserializarlas (con Gson).
Como puede saber mientras usagson.fromJson
no puedes hacer así:
gson.fromJson(responseBody, new TypeToken<T>() {}.getType());
o
gson.fromJson(responseBody, new TypeToken<ArrayList<T>>() {}.getType())
En lugar del objeto real (o lista de objetos reales en el segundo caso) que ha pasado comoT
, conseguirásLinkedTreeMap
objeto (o lista deLinkedTreeMap
objetos).
Si desea un objeto aún deserializado de objetos de tipo genérico (-s), vea la respuesta a continuación.
+ Bonus: la solución genérica definitiva para loopj + gson
Gracias por los autores y comentaristas de estas publicaciones:
http://blog.xebia.com/2009/02/07/acessing-generic-types-at-runtime-in-java/