簡體   English   中英

按 Json 對象中的一些字段排序

[英]Sorting by some of the fields in Json Object

我有一個包含對象數組的 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<String> list = new ArrayList<String>();

  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/對象映射:

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

您應該創建一個MyObject類來保存一個對象的數據(tId、startTime、completeTime、status、machineName)。

然后,將每個JsonObject解析為MyObject並將其添加到List<MyObject>

然后,使用Collections.sort()和比較器對列表進行排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM