我正在使用retrofit POST json数组到服务器。数据是这样的:POST JSON数组索引使用改进
{something:
{somethings:
[
{"param1":"value", "param2":value},
{"param1":"value", "param2":value}
]
}
}
然而,我的服务器的力量我必须包括像数组中的索引:
{something:
{somethings:
{
"0":{"param1":"value", "param2":value},
"1":{"param1":"value", "param2":value}
}
}
}
换句话说无法发送的参数是这样的:
something[somethings][][param1]
something[somethings][][param2]
我必须包含索引:
something[somethings][0][param1]
something[somethings][0][param2]
如何使用改造来做到这一点?
我的界面看起来是这样的:
interface ApiService {
@POST("endpoint")
public Callback<Something> postSomething (@Body Something something);
}
我的类看起来像下面:
public class PostSomething {
private MapOfSomething something = new MapOfSomething();
public MapOfSomething getSomething() {
return portfolio;
}
public void setSomething(MapOfSomething something) {
this.something = something;
}
}
public class MapOfSomething {
private JSONObject somethings = new JSONObject();
public JSONObject getPortfolios() {
return somethings;
}
public void setSomethings(List<Something> somethingList) {
for (int i = 0; i<somethingList.size(); i++) {
try {
somethings.put(String.valueOf(i).toString(), somethingList.get(i));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
,并调用类的方法:
PostSomethings something = new PostSomethings();
MapOfSomething map = new mapOfSomething();
map.setSomethings(listofSomething);
something.setSomethings(map);
apiService.postSomething(something);
你的第二个JSON格式是错误的。里面的json数组,你不能把像0这样的值:{“param1”:“value”,“param2”:value} this。 –
是的语法可能是错的,我不是很熟悉它。但关键是,服务器期望数组的索引。我不能POST数组没有索引。 –
然后您可以手动创建json并以字符串形式发送 –