java fastjson JSONArray 根据某个值分组key为jsonarrayvalue为ListJSONArray
要根据JSONArray中的某个值进行分组,可以使用以下步骤:
- 首先创建一个HashMap,用于存储分组结果,其中key为jsonarray的某个值,value为List
。 - 遍历JSONArray,获取每个JSONObject。
- 从JSONObject中获取需要进行分组的值。
- 检查HashMap中是否已存在该分组的key。
- 如果存在,则将该JSONObject添加到相应的value(List
)中。 - 如果不存在,则创建一个新的List
,将该JSONObject添加到其中,并将该分组的key和value添加到HashMap中。
- 如果存在,则将该JSONObject添加到相应的value(List
- 最后,HashMap中的key就是分组的值,value是该分组的所有JSONArray。
以下是一个示例代码:
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
JSONArray jsonArray = JSONArray.parseArray("[{\"name\":\"Alice\", \"age\":20}, {\"name\":\"Bob\", \"age\":30}, {\"name\":\"Alice\", \"age\":25}]");
Map<String, List<JSONArray>> groupedMap = new HashMap<>();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String key = jsonObject.getString("name");
if (groupedMap.containsKey(key)) {
groupedMap.get(key).add(jsonArray.getJSONArray(i));
} else {
List<JSONArray> list = new ArrayList<>();
list.add(jsonArray.getJSONArray(i));
groupedMap.put(key, list);
}
}
// 打印分组结果
for (Map.Entry<String, List<JSONArray>> entry : groupedMap.entrySet()) {
System.out.println("Key: " + entry.getKey());
System.out.println("Value: " + entry.getValue());
System.out.println();
}
}
}
输出结果:
Key: Alice
Value: [[{"name":"Alice","age":20}],[{"name":"Alice","age":25}]]
Key: Bob
Value: [[{"name":"Bob","age":30}]]
上述代码中,我们将JSONArray中的每个JSONObject按照"name"进行了分组,最后将分组结果存储在groupedMap中进行打印。你可以根据自己的需求,修改代码中的字段名和数据类型
原文地址: https://www.cveoy.top/t/topic/hMTb 著作权归作者所有。请勿转载和采集!