比较方法及方法调用
1 import java.util.ArrayList;
2 import java.util.Collections;
3 import java.util.Comparator;
4 import java.util.List;
5 import com.alibaba.fastjson.JSON;
6 import com.alibaba.fastjson.JSONArray;
7 import com.alibaba.fastjson.JSONException;
8 import com.alibaba.fastjson.JSONObject;
9 import com.alibaba.fastjson.parser.deserializer.ParseProcess;
10
11 /**
12 * Java中对JSONArray中的对象的某个字段进行排序
13 *
14 * @author lijianbo
15 * @version 1.0
16 *
17 */
18 public class Test1 implements ParseProcess {
19
20 public static void main(String[] args) {
21 String jsonArrStr = "[ { "ID": "2016-05-25", "Name": "Fargo Chan" },{ "ID": "2016-05-23", "Name": "Aaron Luke" },{ "ID": "2016-05-26", "Name": "Dilip Singh" }]";
22 System.out.println("排序前:"+jsonArrStr);
23 String jsonArraySort = jsonArraySort(jsonArrStr);
24 System.out.println("排序后:"+jsonArraySort);
25 }
26
27 /**
28 * 按照JSONArray中的对象的某个字段进行排序(采用fastJson)
29 *
30 * @param jsonArrStr
31 * json数组字符串
32 *
33 */
34 public static String jsonArraySort(String jsonArrStr) {
35 JSONArray jsonArr = JSON.parseArray(jsonArrStr);
36 JSONArray sortedJsonArray = new JSONArray();
37 List<JSONObject> jsonValues = new ArrayList<JSONObject>();
38 for (int i = 0; i < jsonArr.size(); i++) {
39 jsonValues.add(jsonArr.getJSONObject(i));
40 }
41 Collections.sort(jsonValues, new Comparator<JSONObject>() {
42 // You can change "Name" with "ID" if you want to sort by ID
43 private static final String KEY_NAME = "ID";
44
45 @Override
46 public int compare(JSONObject a, JSONObject b) {
47 String valA = new String();
48 String valB = new String();
49 try {
50 // 这里是a、b需要处理的业务,需要根据你的规则进行修改。
51 String aStr = a.getString(KEY_NAME);
52 valA = aStr.replaceAll("-", "");
53 String bStr = b.getString(KEY_NAME);
54 valB = bStr.replaceAll("-", "");
55 } catch (JSONException e) {
56 // do something
57 }
58 return -valA.compareTo(valB);
59 // if you want to change the sort order, simply use the following:
60 // return -valA.compareTo(valB);
61 }
62 });
63 for (int i = 0; i < jsonArr.size(); i++) {
64 sortedJsonArray.add(jsonValues.get(i));
65 }
66 return sortedJsonArray.toString();
67 }
68
69 }