• 封装父子级关系


     /**
         * @param parentName 父级编号对应的字段名
         * @param idName 主键的字段名称
         * @param list 数据库查询出来的数据
         * */
        public static JSONArray createTreeJson(List<?> list,String parentName,String idName) throws Exception {
            JSONArray rootArray = new JSONArray();
            for (int i = 0; i < list.size(); i++) {
                Class resource = list.get(i).getClass();
                Object objectResource = list.get(i);
                // 解除私有化限制
                for (Field field : resource.getDeclaredFields()) {
                    if (field.getName().equals(parentName)) {
                        field.setAccessible(true);
                        String parentIdField = field.get(objectResource).toString();
                        if (parentIdField.equals("0")) {
                            //创建子节点分支
                            JSONObject rootObj = createBranch(list, objectResource,parentName,idName);
                            rootArray.add(rootObj);
                        }
                    }
                }
            }
            return rootArray;
        }
    
        public static JSONObject createBranch(List<?> list, Object currentNode,String parentName,String idName) throws Exception {
            JSONObject currentObj = (JSONObject) JSONObject.toJSON(currentNode);
            JSONArray childArray = new JSONArray();
            String parentIdField = null;
            String idField = null;
            for (int i = 0; i < list.size(); i++) {
                Class newNode = list.get(i).getClass();
                Class currentNodeClass = currentNode.getClass();
                for (Field field : newNode.getDeclaredFields()){
                    if (field.getName().equals(parentName)) {
                        field.setAccessible(true);
                        // 反射获取值
                        parentIdField = field.get(list.get(i)).toString();
                    }
                }
                for (Field field : currentNodeClass.getDeclaredFields()) {
                    if (field.getName().equals(idName)) {
                        field.setAccessible(true);
                        // 反射获取值
                        idField = field.get(currentNode).toString();
                    }
                }
    
                if (parentIdField != null && idField != null && parentIdField.equals(idField)) {
                    JSONObject childObj = createBranch(list, list.get(i),parentName,idName);
                    childArray.add(childObj);
                }
            }
            if (!childArray.isEmpty()) {
                currentObj.put("children", childArray);
            }
            return currentObj;
        }
  • 相关阅读:
    Oracle第三方ado.net数据提供程序
    HTML5实战 文摘 第二章 HTML5用于创建表单的输入小部件 数据绑定以及数据验证
    reactjs & antd & redux 使用心得
    HTML5实战 文摘 第一章 从文档到应用的转变
    css的高级选择器
    <!DOCTYPE html> 是什么,它的作用是什么
    Nginx调优
    java enum 枚举简单用法
    简谈java解析HTML(org.jsoup.nodes.Document)
    jquery EasyUI tree 加载远程数据 java实现
  • 原文地址:https://www.cnblogs.com/huqi96/p/14633277.html
Copyright © 2020-2023  润新知