
感谢@ILLIA
DEREVIANKO(https://github.com/square/retrofit/issues/1324)发布的链接,我设法解决了此类问题:
public class ProxyRetrofitQueryMap extends HashMap<String, Object> { public ProxyRetrofitQueryMap(Map<String, Object> m) { super(m); } @Override public Set<Entry<String, Object>> entrySet() { Set<Entry<String, Object>> originSet = super.entrySet(); Set<Entry<String, Object>> newSet = new HashSet<>(); for (Entry<String, Object> entry : originSet) { String entryKey = entry.getKey(); if (entryKey == null) { throw new IllegalArgumentException("Query map contained null key."); } Object entryValue = entry.getValue(); if (entryValue == null) { throw new IllegalArgumentException( "Query map contained null value for key '" + entryKey + "'."); } else if(entryValue instanceof List) { for(Object arrayValue:(List)entryValue) { if (arrayValue != null) { // Skip null values Entry<String, Object> newEntry = new AbstractMap.SimpleEntry<>(entryKey, arrayValue); newSet.add(newEntry); } } } else { Entry<String, Object> newEntry = new AbstractMap.SimpleEntry<>(entryKey, entryValue); newSet.add(newEntry); } } return newSet; }}这样我们就可以使用一个映射,其中key是唯一的参数名称,value是一个字符串列表,它是此参数的值。像这样:
ProxyRetrofitQueryMap map = new ProxyRetrofitQueryMap(); List<String> values1 = new ArrayList<>(); values1.add("10"); values1.add("11"); map.put("filter[1]", values1); List<String> values2 = new ArrayList<>(); values1.add("20"); values1.add("21"); map.put("filter[2]", values2);欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)