+-
android-处理来自RetroFit中同一终结点的不同JSON响应类型
我需要帮助.

我有一个带参数的端点.根据此参数,返回的JSON将完全不同.

RetroFit是否可以处理此问题?

例如:

http://myserver.com/all/<parameter>

其中参数为BUS或BICYCLE,以及稍后添加其他参数.

一个示例BUS请求将返回:

"stops": [{
    "Lat": "....",
    "Lng": "....",
    "Name": "Main Street",
    "Route": "",
    "StopNumber": "2"
}]

BICYCLE端点将返回:

"stops": [{
    "address": "Town Centre",
    "lat": "....",
    "lng": "....",
    "number": "63",
    "open": "1"
}]

根据用户所在的Android应用程序的哪个部分,我想发送一个不同的参数,并能够使用相同的调用来处理它.

我当时在考虑使用一个名为AllTypes的父类,其他每个类都将其扩展,然后将Retrofit调用签名设置为:

@GET("/all/{type}")
void getAll(@Path("type") String type, Callback<AllTypes> callback);

但是我不确定Retrofit是否可以根据返回的JSON甚至传递的参数类型为AllTypes自动选择正确的子类.

有谁知道如何做到这一点?
如果没有,我只需要创建具有不同回调类型的多个不同方法即可.

谢谢.

最佳答案
只是为了关闭它.

您可以从RetroFit返回原始JSON,并使用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
        }
    }
});
点击查看更多相关文章

转载注明原文:android-处理来自RetroFit中同一终结点的不同JSON响应类型 - 乐贴网