如何用java代码将下面的对象数组:[
    {"id":"1001","name":"值1","value":"111"},
    {"id":"1001","name":"值1","value":"11111"},
    {"id":"1002","name":"值2","value":"25462"},
    {"id":"1002","name":"值2","value":"23131"},
    {"id":"1002","name":"值2","value":"2315432"},
    {"id":"1003","name":"值3","value":"333333"}
]根据相同id字段分组,转换成下面这种形式:[
    {
        "id": "1001",       
        "data": [
            {"id": "1001", "name": "值1", "value": "111"},
            { "id": "1001", "name": "值1", "value": "11111"}
        ]
    },
    {
        "id": "1002",        
        "data": [
            { "id": "1002",  "name": "值2", "value": "25462" },
            { "id": "1002", "name": "值2", "value": "23131"},
            {"id": "1002", "name": "值2","value": "2315432" }
        ]
    },
    {
        "id": "1003",       
        "data": [
            {"id": "1003", "name": "值3", "value": "333333" }
        ]
    }
]

解决方案 »

  1.   

    用fastjson或jackson把json转成对象,重新组装后再转成json
      

  2.   

    可否提供一段比较完整的java代码啊?非常感谢!
      

  3.   

    https://blog.csdn.net/zhang89xiao/article/details/51942614参考下这个吧,自己研究出来的才是自己的东西
      

  4.   

    看这个比较好https://blog.csdn.net/qq_34638435/article/details/80076878
      

  5.   

    就当做个练习题了,我采用fastjson,总感觉代码不够严谨,求大佬指点:    <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.62</version>
        </dependency>
            String sourceStr = "[\n" +
                    "    {\"id\":\"1001\",\"name\":\"值1\",\"value\":\"111\"},\n" +
                    "    {\"id\":\"1001\",\"name\":\"值1\",\"value\":\"11111\"},\n" +
                    "    {\"id\":\"1002\",\"name\":\"值2\",\"value\":\"25462\"},\n" +
                    "    {\"id\":\"1002\",\"name\":\"值2\",\"value\":\"23131\"},\n" +
                    "    {\"id\":\"1002\",\"name\":\"值2\",\"value\":\"2315432\"},\n" +
                    "    {\"id\":\"1003\",\"name\":\"值3\",\"value\":\"333333\"}\n" +
                    "]";
            JSONArray jsonArray = JSONArray.parseArray(sourceStr);
            Map<String, List<JSONObject>> map = new HashMap<String, List<JSONObject>>();
            String tempIdStr = "";
            List<JSONObject> list = null;
            for(Object obj : jsonArray){
                JSONObject jsonObject = (JSONObject) obj;
                tempIdStr = jsonObject.getString("id");
                if(map.containsKey(tempIdStr)){
                    list = map.get(tempIdStr);
                    list.add(jsonObject);
                }else{
                    list = new ArrayList<JSONObject>();
                    list.add(jsonObject);
                    map.put(tempIdStr, list);
                }
            }
            List targetList = new ArrayList();
            Map targetMap = null;
            for(Map.Entry<String, List<JSONObject>> entry : map.entrySet()){
                targetMap = new HashMap();
                targetMap.put("id", entry.getKey());
                targetMap.put("data", entry.getValue());
                targetList.add(targetMap);
            }
            //String targetStr = JSONArray.toJSONString(targetList);
            String targetStr = JSONArray.toJSONString(targetList, SerializerFeature.PrettyFormat); //PrettyFormat用于美化输出
            System.out.println(targetStr);