我正在使用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並以字符串形式發送 –