zoukankan      html  css  js  c++  java
  • 关于有层级关系时返回前端树状json

    结果
    {
        "message": [
            {
                "children": [
                    {
                        "children": [
                            {
                                "children": [
                                    {
                                        "empno": "7876",
                                        "ename": "ADAMS",
                                        "mgr": "7788",
                                        "sal": "1100"
                                    }
                                ],
                                "empno": "7788",
                                "ename": "SCOTT",
                                "mgr": "7566",
                                "sal": "3000"
                            },
                            {
                                "children": [
                                    {
                                        "empno": "7369",
                                        "ename": "SMITH",
                                        "mgr": "7902",
                                        "sal": "800"
                                    }
                                ],
                                "empno": "7902",
                                "ename": "FORD",
                                "mgr": "7566",
                                "sal": "3000"
                            }
                        ],
                        "empno": "7566",
                        "ename": "JONES",
                        "mgr": "7839",
                        "sal": "2975"
                    },
                    {
                        "children": [
                            {
                                "empno": "7499",
                                "ename": "ALLEN",
                                "mgr": "7698",
                                "sal": "1600"
                            },
                            {
                                "empno": "7521",
                                "ename": "WARD",
                                "mgr": "7698",
                                "sal": "1250"
                            },
                            {
                                "empno": "7654",
                                "ename": "MARTIN",
                                "mgr": "7698",
                                "sal": "1250"
                            },
                            {
                                "empno": "7844",
                                "ename": "TURNER",
                                "mgr": "7698",
                                "sal": "1500"
                            },
                            {
                                "empno": "7900",
                                "ename": "JAMES",
                                "mgr": "7698",
                                "sal": "950"
                            }
                        ],
                        "empno": "7698",
                        "ename": "BLAKE",
                        "mgr": "7839",
                        "sal": "2850"
                    },
                    {
                        "children": [
                            {
                                "empno": "7934",
                                "ename": "MILLER",
                                "mgr": "7782",
                                "sal": "1300"
                            }
                        ],
                        "empno": "7782",
                        "ename": "CLARK",
                        "mgr": "7839",
                        "sal": "2450"
                    }
                ],
                "empno": "7839",
                "ename": "KING",
                "mgr": "0",
                "sal": "5000"
            }
        ]
    }

    1:数据库为Oracle的emp表找出King的所有下属

    <select id="testBigDecimal25"  resultType="com.mayi.vo.Menu">
    		select empno, ename, sal, mgr from emp
    </select>
    

      

    一个javaBean 

    public class Menu {
         private String empno;
            private String ename;
            private String sal;
            private String mgr;
            
            //菜单标识
           // private Meta meta;
         
            //子菜单
            private List<Menu> children;
    
    
    get set自补

    递归查子

    public JSONObject getInfo() {
    	System.out.println("iiiii");
    	List<Menu>	list=dao.testBigDecimal24(s1.concat(".testBigDecimal25"), null);
    	System.out.println(list);
    	
    	//调用TreeTest工具类方法生成树形结构的List集合
        List<Menu> treeList = TreeUtil.listToTree(list);
    
        //使用fastjson对树形list件序列化转成json字符串,过滤掉属性值为null的属性
        String message = JSON.toJSONString(treeList,SerializerFeature.PrettyFormat);
        JSONObject returnData = new JSONObject();
    
        //重新将json字符串转成jsonObject对象,返回给前端
        returnData.put("message",JSON.parse(message));
        //return CommonUtil.successJson(returnData);
    
    		return returnData;
    		
    	}
    

      utils

    //用List构建带有层次结构的json数据
    //List父子节点构造树形Json
    public class TreeUtil {
      //将list集合转成树形结构的list集合
      public static List<Menu> listToTree(List<Menu> list) {
          //用递归找子。
          List<Menu> treeList = new ArrayList<Menu>();
          for (Menu tree : list) {
              if (tree.getMgr().equals("0")) {      //这个地方注意报空指针======
                  treeList.add(findChildren(tree, list));
              }
          }
          return treeList;
      }
    
      //寻找子节点
      private static Menu findChildren(Menu tree, List<Menu> list) {
          for (Menu node : list) {
              if (node.getMgr().equals(tree.getEmpno())) {
                  if (tree.getChildren() == null) {
                      tree.setChildren(new ArrayList<Menu>());
                  }
                  tree.getChildren().add(findChildren(node, list));
              }
          }
          return tree;
      }
    
    
    }
  • 相关阅读:
    iOS缓存
    哈希表
    查找
    基数排序
    归并排序
    快速排序
    redis 的高并发的理解
    springboot的理解
    使用maven命令安装jar包到本地仓库
    linux Centos7 安装docker步骤
  • 原文地址:https://www.cnblogs.com/flz-0429/p/10067951.html
Copyright © 2011-2022 走看看