【发布时间】:2016-06-27 06:44:10
【问题描述】:
从 API 调用后,我正在使用 retrofit2 处理 http 请求。让我解释一下。
我创建了 2 java 类(POJO)来处理用户和讲师数据,分别是 User.java 和 Lecturer.java。对于响应数据,例如:
{
"users": [
{
"user_id": "28",
"user_email": "john@abc.com",
"user_password": "123"
}
]
}
我可以使用User.java 类来处理这个响应。这个文件没什么复杂的,只包含getter 和setter 方法。讲师数据也是如此,这里是讲师数据的示例:
{
"lecturers": [
{
"lecturer_id": "3",
"user_id": "28",
"lecturer_name": "johny2"
}
]
}
我可以使用Lecturer.java 类来处理它。
但问题是,如果响应包含单个json上的用户和讲师数据,如何处理? .这是请求的示例:
{
"users": [
{
"user_id": "28",
"user_email": "john@abc.com",
"user_password": "123",
"lecturer_id": "3",
"lecturer_name": "johny2"
}
]
}
为了解决这个问题,我想我需要创建另一个包含 User 和 Lecturer 类的 java 类,不幸的是我在这里卡住了。
这是我尝试创建的新文件(Userlecturer.java):
public class UserLecturer {
User user;
Lecturer lecturer;
// how to implement on this part
}
这里是UserLecturer接口:
public interface UserLecturerInterface {
@GET ( "api/endpoint/here" )
Call<UserLecturer> getLecturerByUserId (@Path( "userId" ) String userId );
}
感谢任何帮助。如果上述用例不够清楚,请向我询问更多信息。谢谢
【问题讨论】:
-
我认为这是正确的解决方案。有没有发现什么问题?
-
@RaymondLukanta 的问题是,如何在
UserLecturer类中编写getters和setters代码,以使这些getters可以在retrofit2 的成功回调中调用 -
@NorlihazmeyGhazali 您可以扩展类
public class User extends Lecturer并重新定义 APICall<User> getLecturerByUserId。但要小心继承。 -
@b1izzard 这种情况下的继承部分不适合。因为稍后,用户数据可能有另一个实体混合在一起。目前,只有用户数据与讲师数据混合在一起。稍后可能会与其他数据混合。
标签: java android json retrofit2