项目中,常常需要排序,可能根据各种条件排序,这里记录一种,根据json数据中成人价格和成人税费的总和按照从小打到的顺序排列。贴上代码,应该很好懂。
@RequestMapping("/sortJson") @ResponseBody public List<JSONObject> sortJson(HttpServletResponse response){ String jsonStr=getFileContentByAddress("文件所在路径\\json.txt"); JSONObject jsonObj=JSONObject.parseObject(jsonStr); JSONArray routings=jsonObj.getJSONArray("routings"); List<JSONObject> list=new ArrayList<>(); for (int i = 0; i < routings.size(); i++) { list.add(routings.getJSONObject(i)); } Comparator<JSONObject> comparator=new Comparator<JSONObject>() { @Override public int compare(JSONObject o1, JSONObject o2) { return (o1.getInteger("adultPrice")+o1.getInteger("adultTax"))-(o2.getInteger("adultPrice")+o2.getInteger("adultTax")); } }; Collections.sort(list,comparator); // 设置response的ContentType解决中文乱码 //response.setContentType("text/html;charset=UTF-8"); return list; } public static String getFileContentByAddress(String url){ if(isNullOrEmpty(url)){ throw new NullPointerException("获取文件内容地址为空!"); } File file = new File(url); String content = getFileContentByFile(file); return content; } public static boolean isNullOrEmpty(String str) { boolean flag = false; if (str == null || "".equals(str)) { flag = true; } return flag; } public static String getFileContentByFile(File file){ BufferedReader br=null; StringBuffer buffer = new StringBuffer(); try { br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")); String line=""; while((line=br.readLine())!=null){ buffer.append(line); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ try { br.close(); } catch (IOException e) { e.printStackTrace(); } } return buffer.toString(); }期间遇到一个乱码的问题,原因是文件的编码格式与输入流的格式没有一致,所以,导致中文乱码。设置成utf-8,问题解决。