我有一个JSON数组,我想根据名称和字母顺序对其进行排序。我的Json如下。
[ { "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" } ]
如您所见,我有一个键值“名称”,因此我得到了尊敬的名称。我想完全基于该名称对Json数组进行排序,并且也按字母顺序排序。
转换JSONArray为Arraylist<JSONBbject>并使用集合对您的数组列表进行排序
JSONArray
Arraylist<JSONBbject>
例如 :
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; } } });