I am using retrofit for rest api calls for my android app development. Since my all api response has "info"(Note that all api will have same key name) and "data" (Note that different apis have different key names) parameter, I have used a base class for the api responses. Below are the sample responses from API
Response 1
{
"info":{
"statusCode":200,
"message":"OK"
},
"data":{
"userId":2,
"userName":"riyas"
}
}
Response 2
{
"info":{
"statusCode":200,
"message":"OK"
},
"data":{
"vegId":2,
"vegName":"Potatoa"
}
}
I have created a base class named CloudBaseResponse and was able to get data in response.info . But I have no idea to parse the **data** . Please suggest me a way to handle using Retrofit
public class CloudBaseResponse {
public BaseResponse response;
public BaseResponse getResponse() {
return response;
}
public void setResponse(BaseResponse response) {
this.response = response;
}
public class BaseResponse {
public Info info;
}
public class Info{
public String status;
public String message;
}
}
解决方案
You can use Generics to map your api response.
public class CloudBaseResponse {
@SerializedName("info")
private Info info;
@SerializedName("data")
private T data;
// Getters Setters..
}
public class Info {
private String status;
private String message;
// Getters Setters..
}
For example you have a Vegetable class.
public class Vegetable {
private int vegetableId;
private String vegetableName;
// Getters Setters..
}
Later you can use with Retrofit like the following code:
Call> getVegetables();
在Android应用开发中使用Retrofit进行REST API调用时,由于所有API响应都包含相同的"info"键和不同键名的"data"键,因此可以创建一个基类来解析通用响应。示例响应包括"info"(状态码和消息)和"data"(不同的API有不同的键)。问题在于如何解析"data"部分。解决方案是通过在基类`CloudBaseResponse`中使用泛型来映射API响应,以便在Retrofit中更方便地处理各种类型的"data"数据。

被折叠的 条评论
为什么被折叠?



