Java 导入类时,带Gson的嵌套对象返回null

Java 导入类时,带Gson的嵌套对象返回null,java,json,gson,Java,Json,Gson,我对我的Java已经生疏了,所以我想知道是否有人可以帮忙。我有一个来自RESTAPI的Json,我似乎无法读取嵌套对象,但字段在那里,所以我不知所措 下面是我的json字符串的样子(result from string result=response.getEntity(string.class);在wrapper.java中) 使用下面的代码,我可以毫无问题地获得firstName和lastName,但是我无法获得嵌套对象,除非我显式地将它们放在同一个中(使用@Serialized,@Expo

我对我的Java已经生疏了,所以我想知道是否有人可以帮忙。我有一个来自RESTAPI的Json,我似乎无法读取嵌套对象,但字段在那里,所以我不知所措

下面是我的json字符串的样子(result from string result=response.getEntity(string.class);在wrapper.java中)

使用下面的代码,我可以毫无问题地获得firstName和lastName,但是我无法获得嵌套对象,除非我显式地将它们放在同一个中(使用@Serialized,@Exposure)。我不确定我到底哪里出错了,因为我在导入时没有错误:/

Main.java

@GET
@Path("/api/test")
@Produces(MediaType.APPLICATION_JSON)
public Response getAttributrs(@Context HttpServletRequest req) {
        ResponseObj responseObj = new ResponseObj();
        try {
            ResponseObj listOfAttr = wrapper.getAttr();
            return Response.ok(listOfAttr).build();
        } catch (Exception e) {
            wrapper.manageError(e, responseObj) ;
            return Response.status(500).entity(responseObj).build();
        } 
    }

您的模型类应该如下所示

一级

public class ResponseObj {
@SerializedName("FIRST_NAME")
private String fIRSTNAME;
@SerializedName("LAST_NAME")
private String lASTNAME;
@SerializedName("testAttr")
private List<AttributeClass> testAttr = null;
// getter and setter
两门课就足够了。

你可以从这里得到答案
Wrapper.java

public ResponseObj getAttr() throws Exception {

        Client client = ClientHelper.createClient();
        WebResource webResource = client
                .resource("https://xxxxxxxxx);
        webResource.header("X-METHOD-OVERRIDE", "GET");
        webResource.header("content-type", "application/json");
        ClientResponse response = webResource.type("application/json").get(ClientResponse.class);
        if (response.getStatus() != 200) {
            throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
        }
        String result = response.getEntity(String.class);
        ResponseObj responseObj = new Gson().fromJson(result, ResponseObj.class);
        return responseObj;
    }
ResponseObj.java

@SerializedName("testAttr")
@Expose
private List<AttributesClass> testAttributes;

// getters/setters
AttributeClass.java

private TestInnerClass testInnerClass;
@SerializedName("FIRST_NAME")
@Expose
private String firstName;
@SerializedName("LAST_NAME")
@Expose
private String lastName;

//getters/setters
TestInnerClass.java
@SerializedName("MOTHER_NAME")
@Expose
private String mothersName;
@SerializedName("FATHER_NAME")
@Expose
private String fathersName;

//getters/setters
public class ResponseObj {
@SerializedName("FIRST_NAME")
private String fIRSTNAME;
@SerializedName("LAST_NAME")
private String lASTNAME;
@SerializedName("testAttr")
private List<AttributeClass> testAttr = null;
// getter and setter
public class AttributeClass {
@SerializedName("MOTHER_NAME")
private String mOTHERNAME;
@SerializedName("FATHER_NAME")
private String fATHERNAME;
// getter and setter