Analysieren von Json zur Liste der Elemente mit generischem Feld mit Gson
public class OwnCollection<T>{
private int size;
private List<ResponseItem<T>> data;
}
public class ResponseItem<T>{
private String path;
private String key;
private T value;
}
public class Query{
public <T> OwnCollection<T> getParsedCollection( ... ){
String json = ...; //some unimportant calls where I get an valid Json to parse
return Result.<T>parseToGenericCollection(json);
}
}
public class Result{
public static <T> OwnCollection<T> parseToGenericCollection(String result){
Type type = new TypeToken<OwnCollection<T>>() {}.getType();
//GsonUtil is a class where I get an Instance Gson, nothing more.
return GsonUtil.getInstance().fromJson(result, type);
}
}
Nun, wie ich es nenne:
OwnCollection<Game> gc = new Query().<Game>getParsedCollection( ... );
Als Ergebnis dachte ich, ich werde eine bekommenOwnCollection
mit einemList<ResponseItem>
Dabei enthält ein Antwortelement ein Feld der KlasseGame
. Der Json ist vollkommen in Ordnung und es gibt keinen Parsing-Fehler. Das einzige Problem ist jetzt dieser Fehler, wenn ich versuche, einen zu bekommenGame
item und rufe eine Methode auf:
Exception in thread "main" java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to at.da.example.Game