Retrofit Params:数组数组(键值对数组)

时间:2017-02-19 08:10:49

标签: android retrofit2

我需要使用Retrofit发出GET请求,其中一个参数是键值par的数组,实际上是一个数组数组,如下所示:

 [ [1, 10], [50, 100] ]

我想出了如何在POSTMAN中执行此请求:

Key: durations[0][0] Value: 1
Key: durations[0][1] Value: 10

等等。 但是,我不知道要为Retrofit代表这个。 谢谢你的帮助。

编辑:

我试图将其表示为@Query("durations[]") List<List<Integer>>持续时间;单个条目是一个包含两个值的列表,即开始和结束。没有运气。

2 个答案:

答案 0 :(得分:0)

我建议你使用这种方法

Object get( @Query("durations[0][0]") int value1,@Query("durations[0][1]") int value2,
@Query("durations[1][0]") int value3,@Query("durations[1][1]") int value4)

答案 1 :(得分:0)

所以基本上这就是我解决这个问题的方法。我只需手动构建我需要的参数字符串,并将其与值一起放入Map中。在您的Retrofit界面中,将其归档为@QueryMap:

@QueryMap Map<String, Integer> durations,

看一下制作参数的方法:

public void prepareDurations(Pair<Integer, Integer> durationValues) {
    Map<String, Integer> paramsMap = new HashMap<>();
    if(durationValues!=null) {
        paramsMap.put("durations[0][0]", durationValues.first);
        paramsMap.put("durations[0][1]", durationValues.second);
        setDuration(paramsMap);
    }else {
        setDuration(new HashMap<>());
    }
}