获得Gson的回应

hl0ma9xz  于 2022-11-06  发布在  其他
关注(0)|答案(3)|浏览(137)

我正在尝试使用retrofint + rxjava + gson接收响应
我们的后端是用laravel开发的。
问题是gson不能将json转换为我java类
下面是我的类和响应的示例
答复示例:

{
"data": {
    "id": 3,
    "name": "name",
    "last_name": "last name",
    "phone_number": "091212345678",
    "avatar": null
}

}
和Java类:

public class User {
private Long id;
private String name;
private String last_name;
private String phone_number;
private String role;
@SerializedName("avatar")
private String profilePicture;

public Long getId() {
    return id;
}

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

public String getName() {
    return name;
}

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

public String getLastName() {
    return last_name;
}

public void setLastName(String last_name) {
    this.last_name = last_name;
}

public String getPhone_number() {
    return phone_number;
}

public void setPhone_number(String phone_number) {
    this.phone_number = phone_number;
}

public String getRole() {
    return role;
}

public void setRole(String role) {
    this.role = role;
}

public String getProfilePicture() {
    return profilePicture;
}

public void setProfilePicture(String profilePicture) {
    this.profilePicture = profilePicture;
}

我不知道json响应中的“数据”是什么。
以及为什么gson不能将json转换为java。
请帮帮我

fxnxkyjh

fxnxkyjh1#

由于此json响应是嵌套的,因此您应该像下面这样设计类,方法是将用户对象 Package 在类中,以便正确解析此响应。

public class User {

public Long id;
public String name;
public String last_name;
public String phone_number;
public String avatar;

}
-----------------------------------
public class Data {

public User user;

}
ttvkxqim

ttvkxqim2#

重新设计您的Model类,如下所示:

public class User {

@SerializedName("data")
public Data data;

// Generate getter setter for all the field here

}

现在使用您的Json属性创建另一个名为Data的类:

public class Data {

public Long id;
public String name;
public String last_name;
public String phone_number;
public String avatar;

// Generate getter setter for all the field here

}

现在,您可以按如下方式访问字段:

User user = new User();
//get name
user.getData().getName();
//set name
user.getData().setName("Demo");
kqqjbcuj

kqqjbcuj3#

您有一个名为“data”的JSON对象,而User类不包含用于存储“data”对象内容的数据字段。Gson在User类中查找名为“data”的字段,该字段可以保存“data”对象的内容,但没有找到。现在有两种方法可以实现这一点。
1.使用以下格式返回JSON对象:
{
“id”:3,
“姓名”:“姓名”,
“姓氏”:“姓”,
“电话号码”:“091212345678”、
“头像”:空
}

2.1创建一个Data类并在User类中声明它:

public class Data {  
private Long id;  
private String name;  
private String last_name;  
private String phone_number;  
private String role;  
@SerializedName("avatar")  
private String profilePicture;  
/*Getters and setters here*/ }

2.1.在User类中声明数据字段

public class User {  private Data data; public Data getData() {  return data; }}

相关问题