問題
JSONArray中嵌套JSONObject, 對JSONArray進行排序
場景
controller拼裝好jsonArray,返回前台,這個時候需要排序
排序前:
[{"id":1,"name":"ljw"},{"id":3,"name":"ljw"},{"id":2,"name":"ljw"}]
排序后:
[{"id":1,"name":"ljw"},{"id":2,"name":"ljw"},{"id":3,"name":"ljw"}]
利用Collections.sort()
JSONObject o1 = JSONObject.parseObject("{\"id\":1,\"name\":\"ljw\"}"); JSONObject o2 = JSONObject.parseObject("{\"id\":3,\"name\":\"ljw\"}"); JSONObject o3 = JSONObject.parseObject("{\"id\":2,\"name\":\"ljw\"}"); JSONArray a = new JSONArray(); a.add(o1); a.add(o2); a.add(o3); //轉list 1 List<JSONObject> list = JSONArray.parseArray(a.toJSONString(), JSONObject.class); //轉list 2 //List<JSONObject> list = new ArrayList<JSONObject>(); //for (int i = 0; i < a.size(); i++) { // list.add((JSONObject) a.get(i)); //} System.out.println("排序前:"+a); Collections.sort(list, new Comparator<JSONObject>() { @Override public int compare(JSONObject o1, JSONObject o2) { int a = o1.getInteger("id"); int b = o2.getInteger("id"); if (a > b) { return 1; } else if(a == b) { return 0; } else return -1; } }); JSONArray jsonArray = JSONArray.parseArray(list.toString()); System.out.println("排序后:" + jsonArray);