【发布时间】:2016-03-16 13:28:30
【问题描述】:
假设我们有这个 json:
{
"id": 1,
"first_name": "name"
"studentId": "1235234"
}
我知道我可以使用 GSON 进行反序列化,方法是像这样创建 Class:
class Student {
int id;
String first_name;
String studentId;
}
有没有办法通过使用两个类来达到相同的结果,即。
class User {
int id;
String first_name;
}
class Student {
User user;
String studentId;
}
有没有办法为 GSON 指定一些注释,以便它知道如何填充“用户”对象,除了 Student 类扩展 User 类?
更新:
1) 感谢关于扩展的建议,但我忘了提到我无法扩展“用户”(不要问为什么:)),这就是为什么我首先要寻找解决方法.
2) 自定义反序列化器可以完成这项工作,但我有多个内部有“用户”的类,所以这意味着要添加很多类,我也想避免这种情况。
提前致谢, 米洛斯
【问题讨论】:
-
你可以使用它与 new Gson().fromJson(jsonObject.toString, Student.class);和新的 Gson().fromJson(jsonObject.toString, User.class);
-
如果 Student 扩展 User ,我认为这将使用
Student.class作为fromJson()的参数来工作 -
在这种情况下,您必须为 Student 类创建自定义反序列化程序。但除了@Yazan 的评论:如果 Student 扩展用户,而不是“包含”用户,它看起来更合乎逻辑。学生仍然是用户,对吧?
-
感谢回答者,更新了问题....问题的出现只是因为我应该避免扩展 User 类。回复:自定义反序列化器 - 我可以只“自定义”这部分并让其他字段自动反序列化,还是我需要为整个类编写解析代码
-
您可以使用此站点生成 Gson 类。 jsonschema2pojo.org
标签: java android gson deserialization