Десериализация массива JSON с использованием GSON?
У меня есть JSON как:
{
"status": 200,
"data": [
{
"catId": 638,
"catName": "Helena Bonham Carter",
"catUniqueName": "helena-bonham-carter",
"catSlug": ""
},
{
...
}
]
}
Моя категория модели как:
public class Category {
private double catId;
private String catName;
private String catUniqueName;
private String catSlug;
}
А мой десериализатор gson выглядит следующим образом:
Type listType = new TypeToken<ArrayList<Category>>(){}.getType();
Gson gson = new GsonBuilder()
.registerTypeAdapter(listType, new CategoryDeserializer())
.create();
private class CategoryDeserializer implements JsonDeserializer {
@Override
public Category deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
Gson gson = new Gson();
return gson.fromJson(((JsonObject) json).get("data"), typeOfT);
}
}
Я использую библиотеку Retrofit, которая использует gson для сериализации / десериализации объектов json. Я передаю этот пользовательский десериализатор gson для модернизации, но он выдает ошибку. Можете ли вы сказать мне, где я иду не так при десериализации?
Ошибка:
java.util.ArrayList cannot be cast to com.compzets.app.models.Category
Ожидаемый результат:
я хочуArrayList of Category
из JSON.