java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap无法强制转换为模型类android

时间:2018-01-11 09:33:37

标签: java android gson retrofit linkedhashmap

我将API调用(Retrofit已使用)的响应传递给类并尝试将其强制转换为我的模型类。由于我正在使用改装进行API调用,因此在使用 Gson 将其转换为模型类对象之前,它会根据服务器的响应生成链接的hashmap 。 (这就是我的理解,如果我错了,请纠正我)。我附上了一张我用响应对象调试时可以看到的图像。如何将此响应转换为我的模型类的对象或类型对象。 当我尝试将类型Object强制转换为我的活动中的模型类时,我遇到了类强制转换异常。

这是我的代码

API调用

call.enqueue(new Callback() {

        @Override
        public void onResponse(Call call, Response response) {
            if (response.body() != null) {   
                        List<CategoriesBaseModel> categoryBaseResponseList = (List<CategoriesBaseModel>) response.body();
                        List<Object> categoryResponseList = (List<Object>) categoryBaseResponseList.get(0).getData();
                        if (categoryResponseList != null) {
                           mCategoriesInterface.passCategoriesResponse(categoryResponseList, "HomeFragment");
                        }
            }                
        }
        @Override
        public void onFailure(Call call, Throwable t) {

            call.cancel();
        }
    });

活动

CategoriesInterface categoriesInterface = new CategoriesInterface() {
    @Override
    public void passCategoriesResponse(List<Object> scheduleList, String name) {
        CategoriesModel categoriesModel;
        for (Object model : scheduleList){
            categoriesModel = (CategoriesModel) model;
            Log.d("TAG", "");
        }
    }
};

enter image description here

1 个答案:

答案 0 :(得分:-1)

通过将Object转换为Json字符串并将其直接转换回模型类对象来解决此问题。

Gson gs = new Gson();
String js = gs.toJson(model);
categoriesModel = gs.fromJson(js, CategoriesModel.class);