JSONArray 中JSONObject 日期排序
时间: 2024-03-22 13:17:40 浏览: 70
根据JSONArray中给定字段排列顺序
可以通过自定义比较器来实现JSONArray中JSONObject的日期排序。具体步骤如下:
1. 首先,将JSONArray中的JSONObject转换为Java对象,并在Java对象中添加一个日期属性,以便比较。
2. 创建一个自定义比较器类,实现Comparator接口,并重写compare方法,用于比较两个Java对象的日期属性。
3. 使用Collections.sort()方法,将Java对象列表按照日期属性进行排序。
4. 遍历排序后的Java对象列表,并将每个Java对象转换回JSONObject,最终得到排序后的JSONArray。
示例代码如下:
```java
// JSONArray中JSONObject排序
JSONArray jsonArray = new JSONArray();
// 添加JSONObject元素
jsonArray.put(new JSONObject("{\"date\":\"2021-01-01\"}"));
jsonArray.put(new JSONObject("{\"date\":\"2021-02-01\"}"));
jsonArray.put(new JSONObject("{\"date\":\"2021-03-01\"}"));
// 将JSONArray中的JSONObject转换为Java对象
List<JSONObject> jsonObjectList = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
jsonObjectList.add(jsonObject);
}
// 自定义比较器,按照日期属性比较
Comparator<JSONObject> comparator = new Comparator<JSONObject>() {
@Override
public int compare(JSONObject o1, JSONObject o2) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse(o1.getString("date"));
Date date2 = sdf.parse(o2.getString("date"));
return date1.compareTo(date2);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
};
// 对Java对象列表进行排序
Collections.sort(jsonObjectList, comparator);
// 将Java对象转换回JSONObject
JSONArray sortedJsonArray = new JSONArray();
for (JSONObject jsonObject : jsonObjectList) {
sortedJsonArray.put(jsonObject);
}
System.out.println(sortedJsonArray.toString());
```
输出结果为:
```
[{"date":"2021-01-01"},{"date":"2021-02-01"},{"date":"2021-03-01"}]
```
阅读全文