使用可视化表单设计器完成json 的合并

该博客主要介绍了如何使用Java实现多个JSON对象的合并,并通过标识进行去重。在Controller和Service层中,代码展示了从多个JSON中提取数据,将其合并到一个大的JSON数组中,并通过遍历比较元素的特定属性来去除重复项。这个过程涉及到对JsonParser和Gson库的使用,以及对数据结构的操作,以达到最终的合并和去重效果。
摘要由CSDN通过智能技术生成

使用可视化表单设计器完成json 的合并

该代码需要可视化表单的支持(需购买)

在这里插入图片描述这是一张表的情况,需要是将多张合并成一张,并更具标识去重;
上图为json 数据格式
每一个位置都对应一个标识

自动合并json

controller

  //多个json的合并和去重
    @ApiOperation("自动合成并去重")
    @PostMapping("/autoShowTable")
    public Result autoShowTable(@RequestParam String rowguid,@RequestParam String dataId){
        HashMap<String, Object> oneTableShow = utilThemejsontemplateInfoService.autoShowTable(rowguid, dataId);
        return Result.ok().data(oneTableShow);
    }

service

    @Override
    public HashMap<String, Object> autoShowTable(String rowguid, String dataId) {

        ArrayList<Object> list = new ArrayList<>();
        JsonParser parser=new JsonParser();  //创建JSON解析器
        Gson gson = new Gson();
        String  jsonList="{\"list\":[],\"config\":{\"labelWidth\":100,\"labelPosition\":\"left\",\"size\":\"mini\",\"customClass\":\"\",\"ui\":\"element\",\"layout\":\"horizontal\",\"labelCol\":3,\"width\":\"80%\",\"hideLabel\":false,\"hideErrorMessage\":false}}";
        Map map = gson.fromJson(jsonList, Map.class);

        String s1 = vShareTaskThemeBasicService.selctTaskGuid(rowguid, dataId);
            String[] taskguid = s1.split(",");
        List<UtilInfo> taskInfo = utilInfoMapper.selectList(new QueryWrapper<UtilInfo>().in("taskguid", taskguid).eq("validstatus","1"));
       if (taskInfo.size()>0){
           for (UtilInfo info : taskInfo) {
               JsonObject object=(JsonObject) parser.parse(info.getJsoncontent());  //创建JsonObject对象
               JsonArray list3 = object.get("list").getAsJsonArray();
               for (JsonElement element : list3) {
                   list.add(element);
               }
           }
       }
        map.put("list",list);
        String s = gson.toJson(map);
        
        JsonArray list1 = parser.parse(s).getAsJsonObject().get("list").getAsJsonArray();
      
      String model ="";
      String model1 ="";
        JSONArray[] arr = new JSONArray[0];

        for (int i = 0; i < list1.size(); i++) {

            JsonElement jsonElement = list1.get(i);

            if (jsonElement.getAsJsonObject().has("rows")){

                JsonArray rows = jsonElement.getAsJsonObject().get("rows").getAsJsonArray();

                    for (JsonElement row : rows) {

                        JsonArray columns = row.getAsJsonObject().get("columns").getAsJsonArray();
                        for (JsonElement column : columns) {
                            JsonArray list2 = column.getAsJsonObject().get("list").getAsJsonArray();
                            for (JsonElement element : list2) {

                                model = element.getAsJsonObject().get("model").toString().replace("\"","");
                                System.out.println(element.getAsJsonObject().get("model").getAsString());
                            
                                for (int k = 1; k < list1.size(); k++) {
                                    if (i+k<list1.size()){
                                        JsonElement jsonElement1 = list1.get(i+k);
                                        if (jsonElement1.getAsJsonObject().has("rows")){
                                            JsonArray rows1 = jsonElement1.getAsJsonObject().get("rows").getAsJsonArray();
                                            for (JsonElement row1 : rows1) {
                                                JsonArray columns1 = row1.getAsJsonObject().get("columns").getAsJsonArray();

                                                //完全去重
                                                for (int j = 0; j < columns1.size(); j++) {
                                                    JsonElement column2 = columns1.get(j);
                                                    JsonArray list3 = column2.getAsJsonObject().get("list").getAsJsonArray();
                                                    for (JsonElement element1 : list3) {
                                                        model1 = element1.getAsJsonObject().get("model").toString().replace("\"","");
                                                        if (model.equals(model1)) {
                                                            element1.getAsJsonObject().get("options").getAsJsonObject().addProperty("hidden","true");
                                                            System.out.println(element1.getAsJsonObject().get("options").getAsJsonObject().get("hidden").getAsString());
                                                            
                                                            columns1.remove(j);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            //子表单去重
            if (jsonElement.getAsJsonObject().has("tableColumns")){
                String model2 = jsonElement.getAsJsonObject().get("model").getAsString().replace("\"", "");
                for (int k = 1; k < list1.size()-1; k++) {
                    if (i+k<list1.size()){
                        JsonElement jsonElement1 = list1.get(i+k);
                        if (jsonElement1.getAsJsonObject().has("tableColumns")){
                            String model3 = jsonElement1.getAsJsonObject().get("model").getAsString().replace("\"", "");
                            if (model2.equals(model3)){
                                list1.remove(i+k);
                            }
                        }
                    }
                }
            }

        }
        String theninfoid = IdCreator.getId(20);
        map.put("list",list1);
        String jsoncontent = gson.toJson(map);

        //分装返回值
        HashMap<String, Object> map1 = new HashMap<>();
        map1.put("jsoncontent",jsoncontent);
        map1.put("theninfoid",theninfoid);
        System.out.println(jsoncontent);
        return map1;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值