简体   繁体   中英

Group multiple JSONObject into JSONArray

Hi I Have JSON response as

[
    {"sr_no":"1","stn_name":"ALUVA","arrival_time":"5:59:30","distance":"1.81"},
    {"sr_no":"2","stn_name":"PULINCHUDU","arrival_time":"6:02:21","distance":"2.76"},
    {"sr_no":"3","stn_name":"COMPANYPADY","arrival_time":"6:04:19","distance":"3.76"},
    {"sr_no":"4","stn_name":"AMBATTUKAVU","arrival_time":"6:06:15","distance":"4.72"},
    {"sr_no":"5","stn_name":"MUTTOM","arrival_time":"6:08:11","distance":"8.14"},
    {"sr_no":"6","stn_name":"KALAMASSERY","arrival_time":"6:11:20","distance":"8.65"},
    {"sr_no":"7","stn_name":"CUSAT","arrival_time":"6:13:40","distance":"9.15"},
    {"sr_no":"8","stn_name":"PATHADIPALAM","arrival_time":"6:15:52","distance":"12.02"},
    {"sr_no":"9","stn_name":"EDAPPALLY","arrival_time":"6:18:12","distance":"12.55"},
    {"sr_no":"10","stn_name":"CHANGAMPUZHA PARK","arrival_time":"6:20:39","distance":"13.07"},
    {"sr_no":"11","stn_name":"PALARIVATTOM","arrival_time":"6:23:10","distance":"14.43"},
    {"sr_no":"1","stn_name":"ALUVA","arrival_time":"5:59:30","distance":"1.81"},
    {"sr_no":"2","stn_name":"PULINCHUDU","arrival_time":"6:02:21","distance":"2.76"},
    {"sr_no":"3","stn_name":"COMPANYPADY","arrival_time":"6:04:19","distance":"3.76"},
    {"sr_no":"4","stn_name":"AMBATTUKAVU","arrival_time":"6:06:15","distance":"4.72"},
    {"sr_no":"5","stn_name":"MUTTOM","arrival_time":"6:08:11","distance":"8.14"},
    {"sr_no":"6","stn_name":"KALAMASSERY","arrival_time":"6:11:20","distance":"8.65"},
    {"sr_no":"7","stn_name":"CUSAT","arrival_time":"6:13:40","distance":"9.15"},
    {"sr_no":"8","stn_name":"PATHADIPALAM","arrival_time":"6:15:52","distance":"12.02"},
    {"sr_no":"9","stn_name":"EDAPPALLY","arrival_time":"6:18:12","distance":"12.55"},
    {"sr_no":"10","stn_name":"CHANGAMPUZHA PARK","arrival_time":"6:20:39","distance":"13.07"},
    {"sr_no":"11","stn_name":"PALARIVATTOM","arrival_time":"6:23:10","distance":"14.43"}
]

Its all JSONObject but I want to group first 11 objects into array and next 11 entry into another array so response must be like:

[
    [
         {"sr_no":"1","stn_name":"ALUVA","arrival_time":"5:59:30","distance":"1.81"},
         {"sr_no":"2","stn_name":"PULINCHUDU","arrival_time":"6:02:21","distance":"2.76"},
         {"sr_no":"3","stn_name":"COMPANYPADY","arrival_time":"6:04:19","distance":"3.76"},
         {"sr_no":"4","stn_name":"AMBATTUKAVU","arrival_time":"6:06:15","distance":"4.72"},{"sr_no":"5","stn_name":"MUTTOM","arrival_time":"6:08:11","distance":"8.14"},{"sr_no":"6","stn_name":"KALAMASSERY","arrival_time":"6:11:20","distance":"8.65"},{"sr_no":"7","stn_name":"CUSAT","arrival_time":"6:13:40","distance":"9.15"},{"sr_no":"8","stn_name":"PATHADIPALAM","arrival_time":"6:15:52","distance":"12.02"},{"sr_no":"9","stn_name":"EDAPPALLY","arrival_time":"6:18:12","distance":"12.55"},{"sr_no":"10","stn_name":"CHANGAMPUZHA PARK","arrival_time":"6:20:39","distance":"13.07"},{"sr_no":"11","stn_name":"PALARIVATTOM","arrival_time":"6:23:10","distance":"14.43"}
    ],
    [{"sr_no":"1","stn_name":"ALUVA","arrival_time":"5:59:30","distance":"1.81"},{"sr_no":"2","stn_name":"PULINCHUDU","arrival_time":"6:02:21","distance":"2.76"},{"sr_no":"3","stn_name":"COMPANYPADY","arrival_time":"6:04:19","distance":"3.76"},{"sr_no":"4","stn_name":"AMBATTUKAVU","arrival_time":"6:06:15","distance":"4.72"},{"sr_no":"5","stn_name":"MUTTOM","arrival_time":"6:08:11","distance":"8.14"},{"sr_no":"6","stn_name":"KALAMASSERY","arrival_time":"6:11:20","distance":"8.65"},{"sr_no":"7","stn_name":"CUSAT","arrival_time":"6:13:40","distance":"9.15"},{"sr_no":"8","stn_name":"PATHADIPALAM","arrival_time":"6:15:52","distance":"12.02"},{"sr_no":"9","stn_name":"EDAPPALLY","arrival_time":"6:18:12","distance":"12.55"},{"sr_no":"10","stn_name":"CHANGAMPUZHA PARK","arrival_time":"6:20:39","distance":"13.07"},{"sr_no":"11","stn_name":"PALARIVATTOM","arrival_time":"6:23:10","distance":"14.43"}]]

How to do this , because I have more than 900 record. In above I had showed only 2. Any suggestion will be appreciated, Thanks in advance. I am doing this for Android app

Parse the original JSON array string, and then add new JSON arrays containing up to 11 objects to a new array, adding each such array to another outer containing array:

// String input contains your string input JSON array
JSONArray jArray = new JSONArray(input);   // your original JSON array
JSONArray outArray = new JSONArray();      // the output array of arrays
JSONArray temp = new JSONArray();          // holder for each internal array
for (int i=0; i < jArray.length(); i++) {
    if (i % 11 == 0 && i > 0) {
        outArray.put(temp);
        temp = new JSONArray();
    }
    temp.put(jArray.getJSONObject(i));
}

First read the json array into a java object array and then break into arrays of your size. I would prefer using jackson framework. http://javareferencegv.blogspot.com/2015/04/parse-json-into-multiple-java-pojos.html?m=1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM