Desserializando Tipos Genéricos com GSON
Eu tenho alguns problemas com a implementação de desserialização Json no meu aplicativo Android (com biblioteca Gson)
Eu fiz aula assim
public class MyJson<T>{
public List<T> posts;
}
E a chamada de desserialização é:
public class JsonDownloader<T> extends AsyncTask<Void, Void, MyJson<T>> {
...
protected MyJson<T> doInBackground(Void... params) {
...
Reader reader = new InputStreamReader(content);
GsonBuilder gson = new GsonBuilder();
Type collectionType = new TypeToken<MyJson<T>>() {}.getType();
result = gson.create().fromJson(reader, collectionType);
...
}
}
O problema é que a lista de results.posts após a chamada contém uma matriz de objetos LinkedTreeMap (com valores corretos para que o problema seja a desserialização) em vez de objetos MyJson. Quando eu uso MyObject em vez de T tudo está funcionando bem e MyObject está correto.
Portanto, há alguma maneira de implementar a chamada de desserialização sem criar um desserializador personalizado?