How to sort array of json objects in java
android, json, sorting
Solution
I am posting the answer here helping others who are facing the issue with this kind of problems.
public static JSONArray getSortedList(JSONArray array) throws JSONException {
List<JSONObject> list = new ArrayList<JSONObject>();
for (int i = 0; i < array.length(); i++) {
list.add(array.getJSONObject(i));
}
Collections.sort(list, new SortBasedOnMessageId());
JSONArray resultArray = new JSONArray(list);
return resultArray;
}
This part of the code will help to sort the json array
Check out the SortBasedOnMessageId class below.
public class SortBasedOnMessageId implements Comparator<JSONObject> {
/*
* (non-Javadoc)
*
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
* lhs- 1st message in the form of json object. rhs- 2nd message in the form
* of json object.
*/
@Override
public int compare(JSONObject lhs, JSONObject rhs) {
try {
return lhs.getInt("messageId") > rhs.getInt("messageId") ? 1 : (lhs
.getInt("messageId") < rhs.getInt("messageId") ? -1 : 0);
} catch (JSONException e) {
e.printStackTrace();
}
return 0;
}
}
Problem
i have two json objects in jsonarray like this ``` "errorCode": "1", "data": [ { "messageId": 590, "message": "WvZiT3RPm7feC6Hxsa/Ing==", "messageType": "CHAT", "sentOn": "01:51 PM, Apr 06, 2013", "mainParent": 589, "officeId": "19", "webParent": 590 }, { "messageId": 589, "message": "1A45rtoC3Cy88h73TEvDqQ==", "messageType": "CHAT", "sentOn": "01:50 PM, Apr 06, 2013", "parent": 0, "signImg": null, "mainParent": 589, "officeId": "19", "webParent": 1 } ] ``` so i want to sort in ascending order based on message id key. i tried with comparator with object type as json object, i am getting error in compareto method. please suggest me