Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试访问POJO属性时的空指针_Java_Android_Gson_Retrofit - Fatal编程技术网

Java 尝试访问POJO属性时的空指针

Java 尝试访问POJO属性时的空指针,java,android,gson,retrofit,Java,Android,Gson,Retrofit,我使用改型2来使用JSON API,我有以下JSON结构 { "data": { "id": 1, "name": "Josh" } } 我的UserPOJO看起来像: public class User { private String name; public String getName() { return name; } public void setName(String name

我使用改型2来使用JSON API,我有以下JSON结构

{
    "data": {
        "id": 1,
        "name": "Josh"
    }
}
我的
User
POJO看起来像:

public class User {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
和我的用户界面

@GET("/api/v1/me")
Call<User> me();
public void onResponse(响应响应、改装){
if(response.issucess()){
Log.i(“user”,response.body().getData().getName().toString());
}
}

您应该按如下方式创建POJO类:

用于json响应的POJO:

public class User {


    private Data data;


    public Data getData() {
        return data;
    }


    public void setData(Data data) {
        this.data = data;
    }

}
内部数据的POJO:

public class Data {


    private int id;

    private String name;


    public int getId() {
        return id;
    }


    public void setId(int id) {
        this.id = id;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }

}

然后使用response.body().getData().getName()访问响应中的名称。

您的名称属性位于数据属性内,因此不需要反序列化proper@cafebabe1991是的,这就是我所想的,从POJO的数据属性中获取数据的正确方法是什么?你可以制作另一个POJO,有数据对象属性…所以首先从响应中获取数据,然后从中获取名称和id。请查看更新的注释。@cafebabe1991您能给出一个代码示例吗?您好。如果数据对象从API返回为null,如何处理,然后访问getData将引发null指针异常
Access it like this
public void onResponse(Response<Data> response, Retrofit retrofit) {
        if(response.isSuccess()) {
            Log.i("user", response.body().getData().getName().toString());
        }

    }
public class User {


    private Data data;


    public Data getData() {
        return data;
    }


    public void setData(Data data) {
        this.data = data;
    }

}
public class Data {


    private int id;

    private String name;


    public int getId() {
        return id;
    }


    public void setId(int id) {
        this.id = id;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }

}