格式化输入字符串数组
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);
我正在尝试使用 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);