【发布时间】:2016-02-13 15:25:39
【问题描述】:
我需要帮助。
我有一个带有参数的端点。根据这个参数,返回的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,甚至是传递的参数type,自动为AllTypes选择正确的子类。
有人知道怎么做吗? 如果没有,我只需要创建多个具有不同回调类型的不同方法。
谢谢。
【问题讨论】:
-
最好将
JSON合并为一个并为特定类型设置参数 -
你的意思是有一个大类,其中包含来自所有不同
JSON响应的所有字段?这可能效率低下。 -
我的意思是让一个 General
JSON类两种类型都使用那个 -
会有2种以上。至少 4 个。
-
我刚想到一个主意。我可能只返回一个
JSONObject并使用GSON自己转换为我的首选选项。当我调用端点时,我会知道我需要哪种类型,这样可能更有意义。