我正在尝试使用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。
请帮帮我
3条答案
按热度按时间fxnxkyjh1#
由于此json响应是嵌套的,因此您应该像下面这样设计类,方法是将用户对象 Package 在类中,以便正确解析此响应。
ttvkxqim2#
重新设计您的Model类,如下所示:
现在使用您的Json属性创建另一个名为Data的类:
现在,您可以按如下方式访问字段:
kqqjbcuj3#
您有一个名为“data”的JSON对象,而User类不包含用于存储“data”对象内容的数据字段。Gson在User类中查找名为“data”的字段,该字段可以保存“data”对象的内容,但没有找到。现在有两种方法可以实现这一点。
1.使用以下格式返回JSON对象:
{
“id”:3,
“姓名”:“姓名”,
“姓氏”:“姓”,
“电话号码”:“091212345678”、
“头像”:空
}
或
2.1创建一个Data类并在User类中声明它:
2.1.在User类中声明数据字段