![](/img/trans.png)
[英]Want to hide some fields of an object that are being mapped to JSON by Jackson
[英]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.