我正在使用retrofit for rest api调用我的android应用程序开发。由于我的所有api响应都有"info"
(请注意,所有API都具有相同的密钥名称)和"data"
(请注意,不同的api具有不同的密钥名称)参数,我使用过api响应的基类。以下是API
回复1
{
"info":{
"statusCode":200,
"message":"OK"
},
"data":{
"userId":2,
"userName":"riyas"
}
}
回复2
{
"info":{
"statusCode":200,
"message":"OK"
},
"data":{
"vegId":2,
"vegName":"Potatoa"
}
}
我创建了一个名为 CloudBaseResponse 的基类,并且能够以 response.info
获取数据。但我不知道要解析**data**
。请建议我使用改造
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;
}
}
答案 0 :(得分:8)
您可以使用Generics
来映射您的API响应。
public class CloudBaseResponse<T> {
@SerializedName("info")
private Info info;
@SerializedName("data")
private T data;
// Getters Setters..
}
public class Info {
private String status;
private String message;
// Getters Setters..
}
例如,您有一个Vegetable
类。
public class Vegetable {
private int vegetableId;
private String vegetableName;
// Getters Setters..
}
稍后您可以使用Retrofit
,例如以下代码:
Call<CloudBaseResponse<Vegetable>> getVegetables();
答案 1 :(得分:2)
创建一个名为BaseModel
的类,并将其扩展到响应模型(数据)
public class BaseModel {
Info info;
public getInfo(){ return info;}
public setInfo(Info info){ this.info = info; }
public BaseModel() {
}
}
public class Info{
int statusCode;
String message;
public int getStatusCode() {
return statusCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
}
你的数据类就像:
class Response extends BaseModel {
public Data data;
}
class Data{
public int vegId;
public String vegName;
}
最后,在Retrofit
中,您对Response
类