How to sort a JSON array from JSON objects in Android?

I have a JSON array and I want to sort it by name and 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 the key value "Name" and I get respected names. I want to sort this Json array completely based on these names, and this is also in alphabetical order. Thanks in advance.

+4
source share
5 answers

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

eg:

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;
        }
    }
});
+7
source

-, json- json- (, Employee)

List<Employee> employees = parseJson(jsonDate);
Collections.sort(employees, new EmployeeComparator());

:

class EmployeeComparator implements Comparator<Employee> {
    @Override
    public int compare(Employee o1, Employee o2) {
        return o1.getName().compareTo(o2.getName());
    }
}
+2
// try this way i have gave demo code you have modify as per your requirement.

public class MyActivity extends Activity {


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try{
            JSONArray jsonArray = new JSONArray();
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("name","Haresh");
            JSONObject jsonObject1 = new JSONObject();
            jsonObject1.put("name","Akash");
            JSONObject jsonObject2 = new JSONObject();
            jsonObject2.put("name","Biraj");
            JSONObject jsonObject3 = new JSONObject();
            jsonObject3.put("name","Salim");
            JSONObject jsonObject4 = new JSONObject();
            jsonObject4.put("name","Saloni");
            jsonArray.put(jsonObject1);
            jsonArray.put(jsonObject);
            jsonArray.put(jsonObject3);
            jsonArray.put(jsonObject2);
            jsonArray.put(jsonObject4);


            ArrayList<HashMap<String,String>> list = (ArrayList<HashMap<String,String>>)toList(jsonArray);
            Collections.sort(list,new Comparator<HashMap<String, String>>() {
                @Override
                public int compare(HashMap<String, String> stringStringHashMap, HashMap<String, String> stringStringHashMap2) {
                    return stringStringHashMap.get("name").compareTo(stringStringHashMap2.get("name"));
                }
            });
            for (HashMap<String,String> row : list){
                System.out.println("Row :"+row.get("name"));
            }

        }catch (Exception e){
            e.printStackTrace();
        }


    }

    private Object fromJson(Object json) throws JSONException {
        if (json == JSONObject.NULL) {
            return null;
        } else if (json instanceof JSONObject) {
            return jsonToMap((JSONObject) json);
        } else if (json instanceof JSONArray) {
            return toList((JSONArray) json);
        } else {
            return json;
        }
    }

    public Map<String, String> jsonToMap(JSONObject object) throws JSONException {
        Map<String, String> map = new HashMap();
        Iterator keys = object.keys();
        while (keys.hasNext()) {
            String key = (String) keys.next();
            map.put(key, fromJson(object.get(key)).toString());
        }
        return map;
    }

    @SuppressWarnings({ "rawtypes", "unchecked" })
    private List toList(JSONArray array) throws JSONException {
        List list = new ArrayList();
        int size = array.length();
        for (int i = 0; i < size; i++) {
            list.add(fromJson(array.get(i)));
        }
        return list;
    }


}
0

JSONArrays . ArrayList, , JSONArray.

0

Android JSON. , , .

, , JSON Java ( ), , .

, . JSON . JSON Android. . Android-java- .

0

Source: https://habr.com/ru/post/1524224/


All Articles