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

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

使用可视化表单设计器完成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;
    }
### 表单设计与编辑工具推荐 在开发过程中,表单设计和编辑是一个非常常见的需求。以下是几款优秀的表单设计与编辑工具或库的推荐,它们可以显著提高开发效率并简化复杂流程。 #### 1. Vue 表单设计器 Vue 是前端开发中非常流行的框架之一,针对 Vue 的表单设计需求,有多款顶级好用的表单设计器可供选择[^2]。这些工具不仅支持拖拽生成表单,还能够快速构建复杂的表单逻辑,减少重复编码的工作量。例如,卡拉云作为一款低代码开发工具,不仅可以生成表单,还能连接前后端数据,极大提升了开发效率。 #### 2. FormGenerator FormGenerator 是一个基于 Element UI 的表单设计及代码生成器项目[^3]。它允许开发者通过可视化界面设计表单,并自动生成相应的代码。这种工具非常适合需要快速开发且对代码质量有一定要求的场景。此外,FormGenerator 支持多种表单组件,满足不同业务需求的同时,也提供了灵活的扩展性。 #### 3. FormRender FormRender 是一款开源的可视化表单设计工具[^4]。它专注于提供简单易用的设计体验,用户可以通过拖拽的方式完成表单设计,同时支持 JSON 格式的数据交互。FormRender 的优势在于其轻量化设计和高度可定制性,适合中小型企业或个人开发者使用。 #### 4. PDF 表单编辑器 如果需要处理 PDF 文件中的表单内容,可以考虑一款功能强大的 PDF 编辑器[^1]。这款工具不仅能编辑 PDF 文档中的文本,还可以添加注释、合并文件以及进行格式转换。虽然它的主要功能是针对 PDF 文件,但在某些特定场景下,也可以用于表单的编辑和设计。 ### 示例代码:FormGenerator 使用示例 以下是一个简单的 FormGenerator 使用示例,展示如何通过配置生成一个表单: ```javascript import FormGenerator from 'form-generator'; const formConfig = [ { type: 'input', label: '用户名', prop: 'username' }, { type: 'password', label: '密码', prop: 'password' }, { type: 'button', label: '提交', nativeType: 'submit' } ]; new FormGenerator({ el: '#app', formItems: formConfig, onSubmit(values) { console.log('表单提交值:', values); } }); ``` ### 总结 以上推荐的工具和库涵盖了从简单的表单设计到复杂的 PDF 编辑需求。无论是前端开发还是后端集成,这些工具都能为开发者提供高效的支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值