JAVA-JSON数据分组
每天学习新知识,每天进步一点点。
JSON数据分组
使用场景:当拿到一组JSON数据时,想要实现提取出此JSON数据中,根据某一个(对象)中的字段进行数据分组解析的情况,则可以使用此案例进行处理。
本案例规则为根据JSON数据中,集合中每一个_widget_1727319205469对象中的username进行分组统计。
json测试数据
{"data":[{"creator":{"name":"张三","username":"user1","status":1,"type":0,"departments":[10]},"updater":{"name":"张三","username":"user1","status":1,"type":0,"departments":[10]},"_widget_1727319205469":{"name":"张三","username":"user1","status":1,"type":0,"departments":[10]}},{"creator":{"name":"李四","username":"user2","status":2,"type":1,"departments":[11]},"updater":{"name":"李四","username":"user2","status":2,"type":1,"departments":[11]},"_widget_1727319205469":{"name":"李四","username":"user2","status":2,"type":1,"departments":[11]}}]}具体测试代码
import com.alibaba.fastjson.JSON;
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;
/**
* @author JMY
* @version 1.0
* @date 2024/10/14 11:05
* @content 细心仔细
*/
public class demo2 {
public static void main(String[] args) {
String jsonStr = "{\"data\":[{\"creator\":{\"name\":\"张三\",\"username\":\"user1\",\"status\":1,\"type\":0,\"departments\":[10]},\"updater\":{\"name\":\"张三\",\"username\":\"user1\",\"status\":1,\"type\":0,\"departments\":[10]},\"_widget_1727319205469\":{\"name\":\"张三\",\"username\":\"user1\",\"status\":1,\"type\":0,\"departments\":[10]}},{\"creator\":{\"name\":\"李四\",\"username\":\"user2\",\"status\":2,\"type\":1,\"departments\":[11]},\"updater\":{\"name\":\"李四\",\"username\":\"user2\",\"status\":2,\"type\":1,\"departments\":[11]},\"_widget_1727319205469\":{\"name\":\"李四\",\"username\":\"user2\",\"status\":2,\"type\":1,\"departments\":[11]}}]}";
JSONObject jsonObject = JSON.parseObject(jsonStr);
JSONArray dataArray = jsonObject.getJSONArray("data");
Map<String, List<JSONObject>> groupedData = new HashMap<>();
for (int i = 0; i < dataArray.size(); i++) {
JSONObject item = dataArray.getJSONObject(i);
JSONObject widgetObject = item.getJSONObject("_widget_1727319205469");
if (widgetObject!= null) {
String username = widgetObject.getString("username");
if (!groupedData.containsKey(username)) {
groupedData.put(username, new ArrayList<>());
}
groupedData.get(username).add(item);
}
}
JSONObject resultJson = new JSONObject();
JSONArray newDataArray = new JSONArray();
for (Map.Entry<String, List<JSONObject>> entry : groupedData.entrySet()) {
JSONArray groupArray = new JSONArray();
for (JSONObject obj : entry.getValue()) {
groupArray.add(obj);
}
JSONObject groupJson = new JSONObject();
groupJson.put(entry.getKey(), groupArray);
newDataArray.add(groupJson);
}
resultJson.put("data", newDataArray);
System.out.println(resultJson.toJSONString());
}
}
脚本处理返回json
{"data":[{"user1":[{"creator":{"name":"张三","departments":[10],"type":0,"username":"user1","status":1},"_widget_1727319205469":{"name":"张三","departments":[10],"type":0,"username":"user1","status":1},"updater":{"name":"张三","departments":[10],"type":0,"username":"user1","status":1}}]},{"user2":[{"creator":{"name":"李四","departments":[11],"type":1,"username":"user2","status":2},"_widget_1727319205469":{"name":"李四","departments":[11],"type":1,"username":"user2","status":2},"updater":{"name":"李四","departments":[11],"type":1,"username":"user2","status":2}}]}]}当然,你也可对此案例脚本进行修改,来实现具体的业务需求。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 枫月Blog
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果