Java 使用 Comparator 对 JsonArray 中的 JsonObject 按日期排序
在 Java 中,可以通过实现 Comparator 接口来对 JsonArray 中的 JsonObject 根据日期字段进行排序。以下是一个示例代码:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Comparator;
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonArraySortByDateExample {
public static void main(String[] args) {
JSONArray jsonArray = new JSONArray();
jsonArray.put(createJsonObject('2021-01-01', 'Object 1'));
jsonArray.put(createJsonObject('2022-05-10', 'Object 2'));
jsonArray.put(createJsonObject('2020-12-25', 'Object 3'));
jsonArray.sort(Comparator.comparing(JsonArraySortByDateExample::getDateFromJsonObject));
System.out.println(jsonArray.toString(4));
}
private static JSONObject createJsonObject(String dateStr, String name) {
JSONObject jsonObject = new JSONObject();
jsonObject.put('date', dateStr);
jsonObject.put('name', name);
return jsonObject;
}
private static LocalDate getDateFromJsonObject(Object obj) {
if (obj instanceof JSONObject) {
JSONObject jsonObject = (JSONObject) obj;
String dateStr = jsonObject.optString('date');
DateTimeFormatter formatter = DateTimeFormatter.ofPattern('yyyy-MM-dd');
return LocalDate.parse(dateStr, formatter);
}
return null;
}
}
这个示例代码创建了一个 JsonArray,其中包含三个 JsonObject,每个 JsonObject 都有一个日期字段和一个名称字段。然后,通过实现 Comparator 接口来创建一个比较器,使用日期字段来进行比较。最后,使用 sort 方法对 JsonArray 进行排序,并将结果打印出来。
注意,这个示例代码使用了 Java 8 中的 LocalDate 和 DateTimeFormatter 类来处理日期。如果你使用的是较早的 Java 版本,可能需要使用其他的日期处理方式。
原文地址: https://www.cveoy.top/t/topic/pMNZ 著作权归作者所有。请勿转载和采集!