I want to include in my Service objects a generic way of deserializing lists of objects from a json string.
Below was my first attempt.
public abstract class AbstractService<T>{
public abstract Class<T> getClazz();
public List<T> deserialize(final String json){
Gson gson = gsonFactory.create();
Type listType = new TypeToken<List<T>>() {}.getType();
List<T> entityList = gson.fromJson(json, listType);
return entityList;
}
}
However due to type erasure, the T in: new TypeToken<List<T>>() {}.getType();
is not available at run time. So instead of getting a list of my entities back, Gson returns a list of Gson Map objects.
NOTE, that I do have access at runtime to the concrete class of T, by calling getClazz(). Although I'm not sure how I can use this to instruct Gson to send me back a list of a certain type.
Does anyone know a way of getting this to work?
Any help would be appreciated.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…