我想传递一个相同元素的数组,但我希望它们作为新字段传递。我想做点什么:
@POST("/api/userInfo/changeProfileData/")
void updateProfile(
@Field("userInfoProfile[languages][0]") String language1,
@Field("userInfoProfile[languages][1]") String language2,
Callback<BaseModel<StateModel>> callback);
但问题是我不知道元素的数量,所以我不能像上面那样做。
我试图传递一个清单:
@Field("userInfoProfile[languages]") List<String> languages
但该值无效,因为我需要带索引的字段(userInfoProfile [languages] [0])。
答案 0 :(得分:0)
使用FieldMap使字段关联更具动态性。
将您的界面更新为:
void updateProfile(
@FieldMap Map<String, String> languages,
Callback<BaseModel<StateModel>> callback);
将从列表中构建FieldMap
的方法
private Map<String, String> buildFieldMap(List<String> data){
Map<String, String> map = new HashMap<String, String>();
String fieldName = "userInfoProfile[languages][%d]"
for(int i = 0; i < data.size(); i++){
map.put(String.format(fieldName, i), data.get(i));
}
return map;
}