Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Square更新将多维散列作为查询参数传递_Java_Android_Retrofit - Fatal编程技术网

Java 如何使用Square更新将多维散列作为查询参数传递

Java 如何使用Square更新将多维散列作为查询参数传递,java,android,retrofit,Java,Android,Retrofit,我有一个字符串id和点的映射,我需要从中生成一个类似于以下内容的路径: .../?assessment[id_1][points]=3&assessment[id_2][points]=5 我不太确定在改造中我会怎么做。 我尝试手动生成一个字符串并将其追加到请求的末尾 @PUT("/path/to/api/{assessment}?{}") void postScore(@Path("assessment") String rubricAssessment, Callback&

我有一个字符串id和点的映射,我需要从中生成一个类似于以下内容的路径:

.../?assessment[id_1][points]=3&assessment[id_2][points]=5
我不太确定在改造中我会怎么做。 我尝试手动生成一个字符串并将其追加到请求的末尾

@PUT("/path/to/api/{assessment}?{}")
    void postScore(@Path("assessment") String rubricAssessment, Callback<Submission> callback);
有人能提出一个更好的方法来实现这一点吗

谢谢你阅读我的问题

编辑:

我发现一个可能的解决方案是使用QueryMap或FieldMap,但这仍然需要我创建一个助手方法来手动构造每个键值。大概是这样的:

 private static String getFieldMap(Map<String,String> map){
    Map<String, String> fieldMap = new HashMap<String, String>();
    for (Map.Entry<String, String> entry : map.entrySet())) {
        map.put("assessment[" +entry.getCriterionId() +"][points]", String.valueOf(entry.getPoints()));
    }
    return fieldMap;
}
void postScore(@Path("assessment") String rubricAssessment, @QueryMap Map<String,String> callback)
私有静态字符串getFieldMap(映射映射){
Map fieldMap=新的HashMap();
for(Map.Entry:Map.entrySet()){
map.put(“assessment[”+entry.getCriterionId()+“][points]”,String.valueOf(entry.getPoints());
}
返回场地图;
}
然后把地图传给这样的东西

 @put("/things")
 void things(@FieldMap Map<String, String> fields);
 }
@put(“/things”)
作废内容(@FieldMap-fields);
}

这是最好的方法吗?非常感谢您的反馈。

您是正确的。您确实可以使用
QueryMap
。老实说,我从未尝试过使用
FieldMap
,因为
QueryMap
对我来说非常好

如果您想使用queryMap,它非常简单。例如:

Map testMap = new HashMap<String,String>();
    testMap.put("key1", "value1");
    testMap.put("key2", "value2");
您的改装电话应如下所示:

 private static String getFieldMap(Map<String,String> map){
    Map<String, String> fieldMap = new HashMap<String, String>();
    for (Map.Entry<String, String> entry : map.entrySet())) {
        map.put("assessment[" +entry.getCriterionId() +"][points]", String.valueOf(entry.getPoints()));
    }
    return fieldMap;
}
void postScore(@Path("assessment") String rubricAssessment, @QueryMap Map<String,String> callback)
void postScore(@Path(“assessment”)字符串rubricasessment,@QueryMap回调)

希望这有帮助。

为什么最后一个表达式的回调类型是
Map
?它应该是一个
回调
,对吗?我也有同样的问题。根据本文的讨论,改型似乎不支持嵌套查询/字段。谢谢