在Android Retrofit中,如何为GET请求查询序列化List?

时间:2016-02-26 20:09:18

标签: android serialization gson retrofit retrofit2

将List序列化为查询参数的最简洁方法是什么?目前,我的序列化变为:

...search?items[]=this&items[]=cat&items[]=cookie...

我需要的是上面的内容,但没有括号。我认为Gson可能有办法做到这一点,但我不确定。

更新 一个重要的事情是,这是一个动态的List需要发布,而不仅仅是个人参数。

3 个答案:

答案 0 :(得分:0)

您需要以这种方式在界面中定义您的方法:

@GET("query")
myMethod(@Query("items") String items)

这就是你应该称之为的方式:

ArrayList<String> list = new ArrayList<String>();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
String items = "";
for (String s : list){
    items += s + ",";
}

api.query(items);

答案 1 :(得分:0)

对于动态列表,您可能希望使用@QueryMap

@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options);

答案 2 :(得分:-1)

您可以在Retrofit的官方文档中看到此示例 http://square.github.io/retrofit/

您必须使用注释@Query注释方法的每个参数。

@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId, @Query("sort") String sort);

enter image description here

我希望它对你有所帮助。