按Json对象中的某些字段排序

我有一个包含以下对象数组的Josn文件:

{ "tId": "Something", "StartTime": "05/29/2013 5:28:33 PM", "CompleteTime": "05/29/2013 5:28:33 PM", "Status": "success", "MachineName": "Machine", }, 

我必须根据开始时间和机器名称进行排序,并仅向用户显示这两项内容。 如果2个或更多任务的开始时间相同,则应根据机器名称对其结果进行排序。 我试图将解析后得到的JsonArray转换为List并在此之后使用自定义collections.sort。 我正朝着正确的方向前进吗? 如何在Collections.sort中修改比较器,以便在相同的开始时间内根据机器名称进行排序

  JsonArray allTasks = jsonParser.parse(reader).getAsJsonArray(); ArrayList list = new ArrayList(); if (allTasks != null) { int len = allTasks.size(); for (int i=0;i<len;i++){ list.add(allTasks .get(i).toString()); } } for (String task : list) { // code to fetch just 2 fields from this task and then sort according to start time } 

您的排序例程看起来像这样,具体取决于您如何进行JSON / Object映射的具体情况:

 Collections.sort(myObjectList, new Comparator() { @Override int compare(MyObject a, MyObject b) { if (a.getStartTime().equals(b.getStartTime())) { return a.getMachineName().compare(b.getMachineName()); } else { return a.getStartTime().compare(b.getStartTime()); } } }); 

您应该创建一个MyObject类来保存一个对象的数据(tId,startTime,completeTime,status,machineName)。

然后,将每个JsonObject解析为MyObject并将其添加到List

然后,使用Collections.sort()和比较器对列表进行排序。