你可以使用Java的FastJSON库来实现将JSONArray数据根据某个值分组为key为JSONArray,value为List的map数据。以下是一个示例代码:

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("[{\"id\":1,\"name\":\"Alice\"},{\"id\":2,\"name\":\"Bob\"},{\"id\":1,\"name\":\"Charlie\"}]");
        
        // 分组字段
        String groupBy = "id";
        
        // 创建Map来存储分组数据
        Map<JSONArray, List<JSONArray>> groupedData = new HashMap<>();
        
        // 遍历JSONArray
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            
            // 根据分组字段获取分组值
            JSONArray groupKey = new JSONArray();
            groupKey.add(jsonObject.get(groupBy));
            
            // 如果Map中已经存在该分组值,则将数据添加到对应的List中
            if (groupedData.containsKey(groupKey)) {
                groupedData.get(groupKey).add(jsonObject);
            } else {
                // 如果Map中不存在该分组值,则创建一个新的List,并将数据添加到List中
                List<JSONArray> groupData = new ArrayList<>();
                groupData.add(jsonObject);
                groupedData.put(groupKey, groupData);
            }
        }
        
        // 打印分组结果
        for (Map.Entry<JSONArray, List<JSONArray>> entry : groupedData.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
    }
}

运行以上代码,将输出以下结果:

Key: [1], Value: [{"id":1,"name":"Alice"},{"id":1,"name":"Charlie"}]
Key: [2], Value: [{"id":2,"name":"Bob"}]

这里使用了一个Map来存储分组数据,其中key为JSONArray类型,value为List类型。在遍历JSONArray时,通过获取分组字段的值来创建分组key,并将数据添加到对应的List中。最后,遍历Map并打印分组结果

java fastjson 数据为 JSONArray 类型将数据根据某个值 分组为数据最终为key=jsonarrayvalue=ListJSONArray的map数据

原文地址: https://www.cveoy.top/t/topic/hMTE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录