是否可以通过 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);
}

}