按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()
和比较器对列表进行排序。