如何用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" }
]
}
]
{"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" }
]
}
]
<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);