改造 - 用基类解析通用api响应

Muh*_*s M 4 android gson retrofit2

我正在使用改造用于我的Android应用程序开发的休息api调用.由于我的所有api响应都有"info"(注意所有api将具有相同的键名)和"data"(注意不同的api具有不同的键名)参数,我已经使用了基类来进行api响应.以下是API的示例回复

回应1

{
"info":{
        "statusCode":200,
        "message":"OK"
       },
"data":{
        "userId":2,
        "userName":"riyas"
       }
 }
Run Code Online (Sandbox Code Playgroud)

回应2

{
"info":{
        "statusCode":200,
        "message":"OK"
       },
"data":{
        "vegId":2,
        "vegName":"Potatoa"
       }
 }
Run Code Online (Sandbox Code Playgroud)

我创建了一个名为CloudBaseResponse的基类,并且能够获取数据response.info.但我不知道要解析**data**.请建议我使用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;
    }

}
Run Code Online (Sandbox Code Playgroud)

sav*_*ion 9

您可以使用它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.. 
}
Run Code Online (Sandbox Code Playgroud)

例如,你有一个Vegetable班级.

public class Vegetable {
    private int vegetableId;
    private String vegetableName;

    // Getters Setters..
}
Run Code Online (Sandbox Code Playgroud)

稍后您可以Retrofit像下面的代码一样使用:

Call<CloudBaseResponse<Vegetable>> getVegetables();
Run Code Online (Sandbox Code Playgroud)