Java 尝试访问POJO属性时的空指针
我使用改型2来使用JSON API,我有以下JSON结构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
{
"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;
}
}