gpt4 book ai didi

java - 线程 "main"java.lang.ClassCastException : com. google.gson.internal.LinkedTreeMap 中的异常无法转换为 t

转载 作者:行者123 更新时间:2023-12-02 09:16:23 29 4
gpt4 key购买 nike

我正在尝试使用retrofit2使用休息服务,当我的pojo没有通用类型时它工作正常。当我不使用通用时,一切正常。这是我的改造服务。该错误发生在迭代数组列表时,如 This Link 中的图片所示。 .

   public interface EposService 
{
@POST("v1/api/product/load_product")
public Call<RestResponseObject> getProducts(@Body ProductParam udata);

}
public class RestResponseObject<T> {
public String message;
private Object payload;
private boolean responseStatus,status;
List<T> data;//getter setter
}
public class ProductBean {

private String make, manufacture_year, name;//getter setter

}
private static RestResponseObject<ProductBean> findProducts(ProductParam pay) {
RestResponseObject mv=new RestResponseObject();
EposService service = retrofit.create(EposService.class);

final Call<RestResponseObject> call = service.getProducts(pay);

try {
Response<RestResponseObject> resp = call.execute();
if(resp!=null)
{
if (resp.code() == 200) {


mv=resp.body();

}
else{

// mv.setStatus(false);//("05");
//mv.setMessage("connection error");
}
}

} catch (Exception e) {

e.printStackTrace();

}

return mv;
}

这是完整的堆栈跟踪。

Exception in thread "main" java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to api.bean.ProductBean
at retrofit.Exec.main(Exec.java:63)

最佳答案

您的 JSON 转换器正在将接收到的对象转换为 LinkedTreeMap,并且您需要以某种方式将其转换为 ProductBean 以便访问它

注释掉您的 for 循环并将以下代码粘贴到其下方,看看会发生什么:

for(Object b: ps)
{
ProductBean bean = new Gson().fromJson(new Gson().toJson(((LinkedTreeMap<String, Object>) b)), ProductBean.class);
System.out.println(bean.getName());
}

(基于this答案)

关于java - 线程 "main"java.lang.ClassCastException : com. google.gson.internal.LinkedTreeMap 中的异常无法转换为 t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58949199/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com