是否可以通过 POST 发送 JSONArray 而不是 JSONObject?
Is it possible to send JSONArray instead of JSONObject via POST?
大多数关于 SO 的答案都围绕着将所有数据发送到一个 JSONObject 中,其中包含 JSONArrays。
如果可能的话,我想做相反的事情。
这是一些代码:
JSONObject winnerJSONObject = new JSONObject();
JSONObject loserJSONObject = new JSONObject();
try{
winnerJSONObject.put(Columns.ID.toString(), winner.getId());
winnerJSONObject.put(Columns.NAME.toString(), winner.getName());
winnerJSONObject.put(Columns.SCORE.toString(),winner.getScore());
winnerJSONObject.put(Columns.WINS.toString(), winner.getWins());
winnerJSONObject.put(Columns.LOSSES.toString(), winner.getLosses());
winnerJSONObject.put(Columns.MAX_SCORE.toString(),winner.getMaxScore());
winnerJSONObject.put(Columns.MIN_SCORE.toString(),winner.getMinScore());
loserJSONObject.put(Columns.ID.toString(), loser.getId());
loserJSONObject.put(Columns.NAME.toString(), loser.getName());
loserJSONObject.put(Columns.SCORE.toString(),loser.getScore());
loserJSONObject.put(Columns.WINS.toString(),loser.getWins());
loserJSONObject.put(Columns.LOSSES.toString(),loser.getLosses());
loserJSONObject.put(Columns.MAX_SCORE.toString(),loser.getMaxScore());
loserJSONObject.put(Columns.MIN_SCORE.toString(),loser.getMinScore());
} catch (JSONException e) {
e.printStackTrace();
}
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = null;
try {
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("Accept", "application/json");
httpPost.setEntity(new StringEntity(jsonArray.toString(), HTTP.UTF_8));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
httpResponse = httpClient.execute(httpPost);
} catch (IOException e) {
e.printStackTrace();
}
JSONArray jsonArray = new JSONArray();
jsonArray.put(winnerJSONObject);
jsonArray.put(loserJSONObject);
为什么这是错误的方法?
是的,这是可能的。
示例:
比如我们在arraylist中有数据要上传到服务器,你可以用这种方式发送
JsonArray _array = new JsonArray()
for(i = 0; i< _arraylist.size(); i++){
JsonObject obj = new JsonObject();
obj.put(_array.list.get(i).getValue);
_array.put(obj);
}
}
大多数关于 SO 的答案都围绕着将所有数据发送到一个 JSONObject 中,其中包含 JSONArrays。
如果可能的话,我想做相反的事情。
这是一些代码:
JSONObject winnerJSONObject = new JSONObject();
JSONObject loserJSONObject = new JSONObject();
try{
winnerJSONObject.put(Columns.ID.toString(), winner.getId());
winnerJSONObject.put(Columns.NAME.toString(), winner.getName());
winnerJSONObject.put(Columns.SCORE.toString(),winner.getScore());
winnerJSONObject.put(Columns.WINS.toString(), winner.getWins());
winnerJSONObject.put(Columns.LOSSES.toString(), winner.getLosses());
winnerJSONObject.put(Columns.MAX_SCORE.toString(),winner.getMaxScore());
winnerJSONObject.put(Columns.MIN_SCORE.toString(),winner.getMinScore());
loserJSONObject.put(Columns.ID.toString(), loser.getId());
loserJSONObject.put(Columns.NAME.toString(), loser.getName());
loserJSONObject.put(Columns.SCORE.toString(),loser.getScore());
loserJSONObject.put(Columns.WINS.toString(),loser.getWins());
loserJSONObject.put(Columns.LOSSES.toString(),loser.getLosses());
loserJSONObject.put(Columns.MAX_SCORE.toString(),loser.getMaxScore());
loserJSONObject.put(Columns.MIN_SCORE.toString(),loser.getMinScore());
} catch (JSONException e) {
e.printStackTrace();
}
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = null;
try {
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("Accept", "application/json");
httpPost.setEntity(new StringEntity(jsonArray.toString(), HTTP.UTF_8));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
httpResponse = httpClient.execute(httpPost);
} catch (IOException e) {
e.printStackTrace();
}
JSONArray jsonArray = new JSONArray();
jsonArray.put(winnerJSONObject);
jsonArray.put(loserJSONObject);
为什么这是错误的方法?
是的,这是可能的。
示例:
比如我们在arraylist中有数据要上传到服务器,你可以用这种方式发送
JsonArray _array = new JsonArray()
for(i = 0; i< _arraylist.size(); i++){
JsonObject obj = new JsonObject();
obj.put(_array.list.get(i).getValue);
_array.put(obj);
}
}