My question is very similiar to this:
Unable to parse Json array using Gson
But I cann't get the answer from it.
The answer from above link:
public static List<MapData> getData(){
Gson gson = new Gson();
String jsonString = "[{"id":18,"city":"test","street":"test 1","zipcode":121209,"state":"IL","lat":32.158138,"lng":34.807838},{"id":19,"city":"test","street":"1","zipcode":76812,"state":"IL","lat":32.161041,"lng":34.810410}]";
Type type = new TypeToken<List<MapData>>(){}.getType();
return gson.fromJson(jsonString, type);
}
It works well, but I want to use implicit operator on generic type. See below:
public static <T> List<T> getData(Class<T> classT){
Gson gson = new Gson();
String jsonString = "[{"id":18,"city":"test","street":"test 1","zipcode":121209,"state":"IL","lat":32.158138,"lng":34.807838},{"id":19,"city":"test","street":"1","zipcode":76812,"state":"IL","lat":32.161041,"lng":34.810410}]";
Type type = new TypeToken<List<T>>(){}.getType();
return gson.fromJson(jsonString, type);
}
And then I try to pass the Class argument to the method:
List<MapData> data = getData(MapData.class);
System.out.println(data.get(0).city);
Then an error was arised:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.ssc.ctq.nav.util.MapData
Can anyone tell me why I get this error? Is implicit operator is not supported in TypeToken class?
See Question&Answers more detail:
os