如何在改造 POST 中发送对象数组?
How can I send an object array in a retrofit POST?
服务器期待这样的事情:
special_array = [{param1 = "string1", param2 = "string2"}, {param1 = "string3", param2 = "string4"}];
我需要自己制作转换器吗?
首先像这样创建一个回调接口并传递整个对象class。
@POST(URL)
public void newObject(@Body YourObject object, Callback<Boolean> success);
Retrofit默认使用Gson进行序列化和反序列化JSON。例如,如果您的对象 class 看起来像这样:
public class YourObject {
@Expose
private String param1;
@Expose
private String param2;
/**
*
* @return
* The param1
*/
public String getParam1() {
return param1;
}
/**
*
* @param param1
* The param1
*/
public void setParam1(String param1) {
this.param1 = param1;
}
/**
*
* @return
* The param2
*/
public String getParam2() {
return param2;
}
/**
*
* @param param2
* The param2
*/
public void setParam2(String param2) {
this.param2 = param2;
}
}
那么Gson会自动序列化成下面的JSON,
[
{
"param1": "string1",
"param2": "string2"
},
{
"param1": "string3",
"param2": "string4"
}
]
大功告成!
我只需要构建一个更大更复杂的对象来考虑这两个参数,比如:
ComplexRequestObject complexRequestObject = new ComplexRequestObject();
complexRequestObject.param1 = new SemiComplexObject[]{
new SemiComplexObject("value1", "valued2")};
complexRequestObject.param2 = "value3";
服务器期待这样的事情:
special_array = [{param1 = "string1", param2 = "string2"}, {param1 = "string3", param2 = "string4"}];
我需要自己制作转换器吗?
首先像这样创建一个回调接口并传递整个对象class。
@POST(URL)
public void newObject(@Body YourObject object, Callback<Boolean> success);
Retrofit默认使用Gson进行序列化和反序列化JSON。例如,如果您的对象 class 看起来像这样:
public class YourObject {
@Expose
private String param1;
@Expose
private String param2;
/**
*
* @return
* The param1
*/
public String getParam1() {
return param1;
}
/**
*
* @param param1
* The param1
*/
public void setParam1(String param1) {
this.param1 = param1;
}
/**
*
* @return
* The param2
*/
public String getParam2() {
return param2;
}
/**
*
* @param param2
* The param2
*/
public void setParam2(String param2) {
this.param2 = param2;
}
}
那么Gson会自动序列化成下面的JSON,
[
{
"param1": "string1",
"param2": "string2"
},
{
"param1": "string3",
"param2": "string4"
}
]
大功告成!
我只需要构建一个更大更复杂的对象来考虑这两个参数,比如:
ComplexRequestObject complexRequestObject = new ComplexRequestObject();
complexRequestObject.param1 = new SemiComplexObject[]{
new SemiComplexObject("value1", "valued2")};
complexRequestObject.param2 = "value3";