Tree树 递归查询,显示成JSON格式

Posted UnmatchedSelf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tree树 递归查询,显示成JSON格式相关的知识,希望对你有一定的参考价值。

首先想验证自己的数据是不是JSON格式可以去 www.json.com 这个json格式检测工具来检测!!!

本地测试数据:

 

这是我本地查出来的数据:

 

转换成json就是下面格式:

具体代码:

需要的json包

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>

 

/**
* 递归查询节点
*/
@RequestMapping(value="quertRecursionOrder",produces ="text/plain;charset=utf-8")
@ResponseBody
public JSONObject findTree(){
JSONObject jsonMap = new JSONObject();
try {
//查询所有菜单    SELECT <include refid="RecursionScheam_Table"/>  FROM recursion  ORDER BY orders ASC
List<RecursionScheam> allMenu = treeService.quertRecursionOrder();
//根节点
List<RecursionScheam> rootMenu = new ArrayList<>();
for (RecursionScheam nav : allMenu) {
//父节点都是0
if(nav.getParentId().equals("0")){
rootMenu.add(nav);
}
}
//为根菜单设置子菜单,getClild是递归调用的
for (RecursionScheam recursionScheam : rootMenu) {
// 获取根节点下的所有子节点 使用getChild方法
List<RecursionScheam> childList = getChild(recursionScheam.getId(),allMenu);
//给根节点设置子节点
recursionScheam.setChildMenus(childList);
}

jsonMap.put("list", rootMenu);
System.err.println(jsonMap.toString());
} catch (Exception e) {
// TODO: handle exception
}

return jsonMap;
}

/**
   * 获取子节点
   * @param id 父节点id
   * @param allMenu 所有菜单列表
   * @return 每个根节点下,所有子菜单列表
   */
public List<RecursionScheam> getChild(String id,List<RecursionScheam> allMenu){
//子菜单
List<RecursionScheam> childList = new ArrayList<RecursionScheam>();
for (RecursionScheam nav : allMenu) {
// 遍历所有节点,将所有菜单的父id与传过来的根节点的id比较
//相等说明:为该根节点的子节点。
if(nav.getParentId().equals(id)){
childList.add(nav);
}
}
//递归
for (RecursionScheam navs : childList) {
navs.setChildMenus(getChild(navs.getId(),allMenu));
}
//如果节点下没有子节点,返回一个空List(递归退出)
if(childList.size() == 0){
return new ArrayList<RecursionScheam>();
}
return childList;
}

 

以上是关于Tree树 递归查询,显示成JSON格式的主要内容,如果未能解决你的问题,请参考以下文章

mysql巧妙化解递归查询树形数据 | 纯sql

使用Oracle数据库的递归查询语句生成菜单树

递归查询 这是一个树结构,查询教师“胡明星”的所有主管及姓名

java递归实现easyui树节点

非递归线段树

TP5 Tree类无限极分类