Java 对象无法映射到POJO类

Java 对象无法映射到POJO类,java,gson,pojo,Java,Gson,Pojo,我得到一个响应,我将其转换为Pojo类,其中一个字段的类型为Object。现在,当我尝试将对象类型强制转换为另一个Pojo类时,它会抛出错误: java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to SecondClass 代码: FirstClassResponse firstClassResponse = (FirstClassResponse) convertJSONTo

我得到一个响应,我将其转换为Pojo类,其中一个字段的类型为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
我正在为FirstClassResponse和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

}

可能gson.fromJson之前无法转换该类的属性类。您可以尝试取出firtClassResponse.getResponse()并单独进行转换

可能gson.fromJson之前无法转换该类的属性类。您可以尝试取出firtClassResponse.getResponse()并单独进行转换

FirstClassResponse
是完全多余的;改用
SecondClassResponse

看看JSON…然后向我解释如何映射为
FirstClassResponse


你甚至没有对象关系映射(就像GSON转换器那样),但是你在解析。

FirstClassResponse
是完全多余的;改用
SecondClassResponse

private Object response;
看看JSON…然后向我解释如何映射为
FirstClassResponse

您甚至没有对象关系映射(正如GSON转换器所做的),但您正在解析

private Object response;
使其成为第二个类响应,而不是对象。由于它是一个对象,GSON不知道这应该是第二个类响应,所以它只是将映射作为映射推到其中,这显然是无法强制转换的

使用GSON的全部目的是将所有内容都转换为特定的对象,以便您能够以更类似Java的方式使用它。如果在从GSON转换时将某个对象存储为对象,则几乎总是出错

使其成为第二个类响应,而不是对象。由于它是一个对象,GSON不知道这应该是第二个类响应,所以它只是将映射作为映射推到其中,这显然是无法强制转换的


使用GSON的全部目的是将所有内容都转换为特定的对象,以便您能够以更类似Java的方式使用它。如果在从GSON转换时将某些内容存储为对象,则几乎总是出错。

我已经隐藏了部分代码。但我实际上想问的是,为什么对象类型没有被类型化到SecondClassResposne@arqam我发现总的来说很难理解你,但事实上。。。如果需要嵌套对象,则需要提供嵌套JSON;虽然JSON是平面的,但这永远不会产生嵌套对象<代码>对象甚至可能是一种非常不幸的返回类型;最好使用泛型——或者改为使用ORM。我已经隐藏了部分代码。但我实际上想问的是,为什么对象类型没有被类型化到SecondClassResposne@arqam我发现总的来说很难理解你,但事实上。。。如果需要嵌套对象,则需要提供嵌套JSON;虽然JSON是平面的,但这永远不会产生嵌套对象<代码>对象甚至可能是一种非常不幸的返回类型;最好使用泛型,或者使用ORM。