我使用Retrofit + Gson解析JSON。如何解決從LinkedTreeMap到ArrayList的Gson JSON解析?
當我嘗試從Google Places API解析響應(好吧,我不嘗試解析,我只是嘗試爲此響應制作模型),並且出現一些錯誤。
這是從谷歌廣場API響應:
{
"predictions" : [
{
"description" : "Николаевская область, Украина",
"id" : "3bd747cc4efc2288da48942b909ce18a053c2060",
"matched_substrings" : [
{
"length" : 5,
"offset" : 0
}
],
"place_id" : "ChIJydRVsbqaxUARLq1R8Q3RgpM",
"reference" : "ClRPAAAAwseWiG8NUMt7TqSqz9rMP8R2M4rX7-cMRmIp4OCYL-VdRSr5B5T_PMwWzYOydVStVpYDvm0ldXYPEzxFAuvn1LqhtWHdROhsERwvmx0tVlwSEFdMw0sOe3rDaB2AqKKmF-YaFLvhiEOz3Bklv5-iTa7QQORILVCU",
"structured_formatting" : {
"main_text" : "Николаевская область",
"main_text_matched_substrings" : [
{
"length" : 5,
"offset" : 0
}
],
"secondary_text" : "Украина"
},
"terms" : [
{
"offset" : 0,
"value" : "Николаевская область"
},
{
"offset" : 22,
"value" : "Украина"
}
],
"types" : [ "administrative_area_level_1", "political", "geocode" ]
}, ...],
"status" : "OK"
}
這是我對這種反應模式:
public class GetGoogleMapPlacesResponse {
@SerializedName("predictions")
private List<GooglePlace> googlePlaces;
public List<GooglePlace> getGooglePlaces() {
return googlePlaces;
}
public void setGooglePlaces(List<GooglePlace> googlePlaces) {
this.googlePlaces = googlePlaces;
}
}
但當改造嘗試的解析響應模型,我得到錯誤:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.myapp.net.rest.response.GetGoogleMapPlacesResponse
這可能是對你有幫助。 http://stackoverflow.com/questions/22285661/gson-json-and-the-subtleties-of-linkedtreemap –
我有這個問題一次,當我在模型中使用泛型,那不是你的情況吧? – mayosk
@mayosk否,在這個要求中我不使用泛型 – Artem