Я использую Retrofit + Gson для разбора JSON.Как исправить разбор Gson JSON от LinkedTreeMap до ArrayList?
Когда я пытаюсь разобрать ответ из Google Places API (хорошо, я не пытаюсь разобрать, я просто пытаюсь создать модель для этого ответа), и я получаю некоторую ошибку.
Это ответ от Google Место 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 нет, в этом вопросе я не использую generics – Artem