当前位置:  开发笔记 > 前端 > 正文

在RetroFit中处理来自同一端点的不同JSON响应类型

如何解决《在RetroFit中处理来自同一端点的不同JSON响应类型》经验,为你挑选了1个好方法。

我需要帮助.

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

有可能RetroFit处理这个吗?

例如:

http://myserver.com/all/

其中参数是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 callback);

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

有谁知道如何做到这一点?如果没有,我将只需要使用不同的Callback类型创建多个不同的方法.

谢谢.



1> eoinzy..:

只是关闭这个.

您可以从中获取原始JSON RetroFit并使用GSON手动序列化到所需的类类型.

例如:

RestClient.get().getDataFromServer(params, new Callback() {
    @Override
    public void success(JSONObject json, Response response) {
        if(isTypeA) {
            //Use GSON to serialise to TypeA        
        } else {
            //Use GSON to serialise to TypeB
        }
    }
});

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有