How to Sort JSON Array from JSON Objects in Android?

android, arrays, json, sorting

Solution

Convert `JSONArray` to `Arraylist<JSONBbject>` and use Collections to sort your arraylist

for example :

ArrayList<JSONObject> array = new ArrayList<JSONObject>();
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < jsonArray.length(); i++) {
    try {
        array.add(jsonArray.getJSONObject(i));
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Collections.sort(array, new Comparator<JSONObject>() {

    @Override
    public int compare(JSONObject lhs, JSONObject rhs) {
        // TODO Auto-generated method stub

        try {
            return (lhs.getString("Name").toLowerCase().compareTo(rhs.getString("Name").toLowerCase()));
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return 0;
        }
    }
});

Problem

I have a JSON array, and I want to sort it Depending on the name and too alphabetically. My Json is as follows. ``` [ { "UserID": 77, "InvID": 333, "Email": "sumeetssm@gmail.com", "Phone": "", "Name": "Summet", "Company": "", "Date": "2014-01-14T00:00:00" }, { "UserID": 0, "InvID": 334, "Email": "amit@testt.com", "Phone": "", "Name": "Amit", "Company": "", "Date": "2014-01-14T00:00:00" }, { "UserID": 3, "InvID": 335, "Email": "amitesh@yahoo.com", "Phone": "", "Name": "Amitesh", "Company": "", "Date": "2014-01-14T00:00:00" }, { "UserID": 0, "InvID": 336, "Email": "foobar@test.com", "Phone": "", "Name": "FOO", "Company": "", "Date": "2014-01-14T00:00:00" }, { "UserID": 0, "InvID": 337, "Email": "krazy.lance@gmail.com", "Phone": "", "Name": "Krazy", "Company": "", "Date": "2014-01-14T00:00:00" }, { "UserID": 1, "InvID": 338, "Email": "test@yahoo.com", "Phone": "", "Name": "Test", "Company": "", "Date": "2014-01-14T00:00:00" }, { "UserID": 0, "InvID": 339, "Email": "maktest@yahoo.com", "Phone": "", "Name": " ", "Company": "", "Date": "2014-01-14T00:00:00" }, { "UserID": 0, "InvID": 340, "Email": "Sam@rediff.com", "Phone": "", "Name": "SAM", "Company": "", "Date": "2014-01-14T00:00:00" }, { "UserID": 101, "InvID": 343, "Email": "anurag@yahoo.com", "Phone": "", "Name": "Anurag", "Company": "", "Date": "2014-01-14T00:00:00" }, { "UserID": 95, "InvID": 379, "Email": "s@s.com", "Phone": "", "Name": "S", "Company": "", "Date": "2014-01-14T00:00:00" }, { "UserID": 0, "InvID": 428, "Email": "sumeetssm@yahoo.com", "Phone": "", "Name": "Summet", "Company": "", "Date": "2014-01-16T00:00:00" }, { "UserID": 4, "InvID": 494, "Email": "sameer@iconnectgroup.com", "Phone": "", "Name": "Sameer P", "Company": "", "Date": "2014-01-21T00:00:00" }, { "UserID": 85, "InvID": 507, "Email": "jonny@dep.com", "Phone": "9404988188", "Name": "Jonny Dep", "Company": "Iconnect", "Date": "2014-01-22T00:00:00" } ] ``` As you can see I have a key value "Name" and in that I get respected names. I want to sort this Json array completely based on this names and that too alphabetically.Thanks in advance.

Original source

Related problems