eoi*_*nzy 8 android json retrofit
我需要帮助.
我有一个接受参数的端点.根据此参数,JSON返回的内容将完全不同.
有可能RetroFit处理这个吗?
例如:
http://myserver.com/all/<parameter>
Run Code Online (Sandbox Code Playgroud)
其中参数是BUS或者BICYCLE,以及稍后添加其他参数.
示例BUS请求将返回:
"stops": [{
"Lat": "....",
"Lng": "....",
"Name": "Main Street",
"Route": "",
"StopNumber": "2"
}]
Run Code Online (Sandbox Code Playgroud)
该BICYCLE端点将返回:
"stops": [{
"address": "Town Centre",
"lat": "....",
"lng": "....",
"number": "63",
"open": "1"
}]
Run Code Online (Sandbox Code Playgroud)
根据用户所在的Android应用程序的哪个部分,我想发送一个不同的参数,并能够使用相同的调用来处理它.
我正在考虑使用一个名为AllTypes其他类扩展的父类,然后将我的Retrofit调用签名设置为:
@GET("/all/{type}")
void getAll(@Path("type") String type, Callback<AllTypes> callback);
Run Code Online (Sandbox Code Playgroud)
但我不确定是否Retrofit可以AllTypes根据返回的JSON,甚至传递的参数自动选择正确的子类type.
有谁知道如何做到这一点?如果没有,我将只需要使用不同的Callback类型创建多个不同的方法.
谢谢.
只是关闭这个.
您可以从中获取原始JSON RetroFit并使用GSON手动序列化到所需的类类型.
例如:
RestClient.get().getDataFromServer(params, new Callback<JSONObject>() {
@Override
public void success(JSONObject json, Response response) {
if(isTypeA) {
//Use GSON to serialise to TypeA
} else {
//Use GSON to serialise to TypeB
}
}
});
Run Code Online (Sandbox Code Playgroud)