在每次调用 Retrofit 中获取对象
get object inside every call Retrofit
我正在使用 Retrofit 和 RxJava 与 API 集成,每个 api 响应都是这样的:
{"success":true,"message":null,"object":{"bla":"String", "bla1":1}}
唯一改变的是 object
,我尝试创建一个 "ResponseBase",每个模型都扩展了它,并创建了一个 "Response",这就是 [=29] =] 将离开 return
public class Response {
public Boolean success;
public String message;
public ResponseBase object;
}
为了得到我想要的对象类型,我只需要输入 .map
//VehicleResponseModel extends ResponseBase
VehicleResponseModel vec = (VehicleResponseModel) response.getObject();
但是出现了这个错误:
ResponseBase cannot be cast to VehicleResponseModel
我没有明确的方法来做到这一点。
我认为问题出在您的继承模型中:
这应该是你的 parent class:
public class Response {
public Boolean success;
public String message;
}
这可能是 child classes 之一(代表包含的数据模型):
public class SomeResponse extends Response {
public InnerModel object;
public static class InnerModel {
public String bla;
public int bla1;
}
}
然后当您收到 SomeResponse
的实例时,您可以轻松访问例如someResponse.object.bla1
.
为此使用泛型:
public class Response<T> {
public Boolean success;
public String message;
public T object;
}
并进行改装 return Response<VehicleResponseModel>
以便您可以从中检索 VehicleResponseModel
如果您打算使用泛型,您应该阅读以下内容:Serializing and Deserializing Generic Types
或者您可以使用上面提到的 Bartek 答案。
public class ResponseBase {
public Boolean success;
public String message;
}
public class VehicleResponseModel extends ResponseBase {
//Your custom vehicle model
}
然后制作你的改装界面returnVehicleResponseModel。
我正在使用 Retrofit 和 RxJava 与 API 集成,每个 api 响应都是这样的:
{"success":true,"message":null,"object":{"bla":"String", "bla1":1}}
唯一改变的是 object
,我尝试创建一个 "ResponseBase",每个模型都扩展了它,并创建了一个 "Response",这就是 [=29] =] 将离开 return
public class Response {
public Boolean success;
public String message;
public ResponseBase object;
}
为了得到我想要的对象类型,我只需要输入 .map
//VehicleResponseModel extends ResponseBase
VehicleResponseModel vec = (VehicleResponseModel) response.getObject();
但是出现了这个错误:
ResponseBase cannot be cast to VehicleResponseModel
我没有明确的方法来做到这一点。
我认为问题出在您的继承模型中:
这应该是你的 parent class:
public class Response {
public Boolean success;
public String message;
}
这可能是 child classes 之一(代表包含的数据模型):
public class SomeResponse extends Response {
public InnerModel object;
public static class InnerModel {
public String bla;
public int bla1;
}
}
然后当您收到 SomeResponse
的实例时,您可以轻松访问例如someResponse.object.bla1
.
为此使用泛型:
public class Response<T> {
public Boolean success;
public String message;
public T object;
}
并进行改装 return Response<VehicleResponseModel>
以便您可以从中检索 VehicleResponseModel
如果您打算使用泛型,您应该阅读以下内容:Serializing and Deserializing Generic Types
或者您可以使用上面提到的 Bartek 答案。
public class ResponseBase {
public Boolean success;
public String message;
}
public class VehicleResponseModel extends ResponseBase {
//Your custom vehicle model
}
然后制作你的改装界面returnVehicleResponseModel。