我得到了一个响应,我将其转换为Pojo类,其中包含一个Object类型的字段。现在,当我试图将Object类型转换为另一个Pojo类时,它会抛出错误:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to SecondClass
编码:
FirstClassResponse firstClassResponse = (FirstClassResponse) convertJSONToObject(firstClassResponseJson, FirstClassResponse.class);
//jsonToObject method
public static Object convertJSONToObject(String jsonRequest, Class objectClassType) throws Exception {
Object object = gson.fromJson(jsonRequest, objectClassType);
return object;
}
在这里,firsClass对象在打印时给出以下结果:
FirstClassResponse [modifiedResponse=null, response={id=123, username=abc, balance=0.0, currencycode=EUR, created=2021-03-30 16:31:54, agent_balance=0.0, sessionid=123}]
现在,错误发生在以下行中:
SecondClassResponse modifiedResponse = (SecondClassResponse) firstClassResponse.getResponse();
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to SecondClassResponse
我正在共享第一类响应和第二类响应的POJO:
public class FirstClassResponse{
private SecondClassResponse modifiedResponse;
private Object response;
//getter, setter
}
public class SecondClassResponse{
private String id;
private String username;
private double balance;
private String currencycode;
private String created;
private double agent_balance;
private String sessionid;
//getter, setter
}
3条答案
按热度按时间polkgigr1#
把它变成一个SecondClassResponse,而不是一个Object。由于它是一个Object,GSON不知道它应该是一个SecondClassResponse,所以它只是把map作为一个Map推到那里,这显然是不能被强制转换的。
使用GSON的全部目的是将所有内容转换为特定的对象,以便您可以以更像Java的方式使用它。如果在从GSON转换时将某些内容存储为Object,则几乎总是做错了。
cwxwcias2#
那
FirstClassResponse
完全是多余的;请改用SecondClassResponse
。只要看看JSON...然后向我解释如何Map为
FirstClassResponse
?您甚至还没有对象关系Map(像GSON转换器那样),但您正在进行解析。
kq0g1dla3#
可能gson.fromJson之前无法转换类的属性类,可以尝试取出firtClassResponse.getResponse(),单独进行转换