使用对象列表对RetroFit FormUrlEncoded参数进行Tricky @Field描述

时间:2014-11-17 21:05:17

标签: java forms retrofit url-parameters

我正在使用@FormUrlEncoded执行@POST操作,因为我点击的API需要HTTP参数作为输入。

目标API期望看到的参数应该看起来像(简化):

ALIST [0] [object1] = 1&安培; ALIST [0] [Object2的] = ASTRING&安培; ALIST [1] [object1] = 2及ALIST [2] [Object2的] = bstring

JsonIzed(为清晰起见)看起来像:

{ 
  "alist": [
    { 
      "object1" : "1",
      "object2" : "astring"
    },
    { 
      "object1" : "2",
      "object2" : "bstring"
    }
  ]
}

基本上,alist [0] [object1]为1,alist [0] [object2]为" astring"。

我最接近的是使用@FieldMap:

...
@FieldMap Map<String,String> myFieldMap
...

我有这样的事情:

@FormUrlEncoded
@Post("/somewhere")
SearchHandle search(@FieldMap Map<String, String> myMap);

哪个让我:

{ 
  "alist": {
    "0" : {
        "object1" : "1",
        "object2" : "astring"
    },
    "1" : {
      "object1" : "2",
      "object2" : "bstring"
    }  
  }    
}

哪个很接近 - 但是API期待一个数组。所以我需要一个......究竟是什么?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

创建一个用于建模数据的类:

class model {
  String object1;
  int object2;
}

现在你的alist应该是一个模型对象数组,你可以使用Gson或jackson等从你的数组创建json对象。