格式化输入字符串数组

Formatting an input String array

我正在尝试使用 Retrofit 将字符串数组发送到我的服务器。如果我的方法是:

@FormUrlEncoded
@Post("postData")
Call<Response> postData(@Field("data") String[] data);

我的输入是:

new String[]{"data1", "data2"}

Retrofit 将其转换为:

data=data1&data=data2

我的问题是:如何让 Retrofit 将我的数组转换成这样:

data=[data1,data2]

我正在使用 Retrofit 2.0.2。

根据文档,在 @Field 注释中传递列表或数组将为每个项目生成一个字段对。对于其他一切,Retrofit 使用 String.valueOf。来源 here and Jake Wharton's comments on changing it here.

目前您可能无法进行自定义 class 和覆盖 toString。例如:

public class StringList {
    private List<String> mData;

    public StringList(List<String> data) { mData = data; }

    @Override
    public String toString() { return mData.toString(); }
}

然后你的改造声明变成:

@FormUrlEncoded
@Post("postData")
Call<Response> postData(@Field("data") StringList data);