如何从webservice响应后反转json数组?

时间:2014-09-26 23:22:45

标签: java android blackberry

我正在回复此

{
    "success": 1,
    "message": "some message",
    "data": [
        {
            "comment_id": "43906",
            "comp_id": "116725",
            "user_id": "48322",
            "agree": "0",
            .....
            "replies": [....]
        },
        {
            "comment_id": "43905",
            "comp_id": "116725",
            "user_id": "48248",
            "agree": "0",
            .......
            "replies": [...]
        }
    ] 
}

我将在json数组中获得所有响应,如此

JSONObject js =new JSONObject(response);
routeJsonArray.=js.getJSONArray("data");

但我需要反转数据数组内的所有对象。换句话说,当我得到响应并打印commant_id" 43906"," 43905",

但是我需要反转那些对象,这样当我打印它时,首先给出" 43905"," 43906",

有从i = routeJsonArray.length; i > 0; i--迭代的解决方案但是我不想要这个。我想将反向数组存储在另一个数组中..

我试试这个。

String [] routeStationString;

JSONArray localJsonArray = js.getJSONArray("data");
routeStationString = new String[localJsonArray.length()];
int k = 0;
for (int i = localJsonArray.length(); i > 0; i--) {
    routeStationString[k++] = localJsonArray.getJSONObject(i);
}
System.out.println(routeStationString);

它给出了错误。?

3 个答案:

答案 0 :(得分:5)

我的方法是创建一个表示数组注释的Java模型,然后继续这样做。

ArrayList<Comment> mList = new ArrayList<Comment>();

for(int i=0;i<routeJsonArray.length();i++){
    //get the jsonobject based on the position
    //retrieve its values
    //create a new comment object and store it to the mList
}

Collection.reverse(mList);

答案 1 :(得分:4)

您通常希望将此数组解析为POJO(模型)。因此,我的想法是获得一个List<Comment> list,然后您就可以通过Collections.reverse(list)方法撤消该列表。

如何使用JSON数组中的数据?你还需要迭代它,还要记住键和一切。最典型的解决方案是将JSON数据解析为java对象。

答案 2 :(得分:0)

JSONArray toReturn = new JSONArray();
    int length = jsonArray.length()-1;
    for(int i =length; i >= length;i--){
        try {
            toReturn.put(jsonArray.getJSONObject(i));
        } catch (JSONException e) {
            e.printStackTrace();
            Toast.makeText(this, "Something wrong", Toast.LENGTH_SHORT).show();
        }
    }