上一篇文章介紹了兩種樹形結構數據整合json格式的方法,第一種方法中有根據父類獲取全部子類的方法,這里單獨拿出來再說一下。
仍然是利用遞歸來整合,代碼如下:
//根據父節點獲取全部子節點 public static List<TreeBuilder.Node> getChildren(Integer pid,List<TreeBuilder.Node> nodeList){ List<TreeBuilder.Node> resultList = new ArrayList<>(); if (null != nodeList && nodeList.size() > 0){ try{ for (TreeBuilder.Node layer : nodeList) { if(pid == layer.getParentId()){ //添加子級節點 resultList.add(layer); //遞歸獲取深層節點 resultList.addAll(getChildren(layer.getId(),nodeList)); } } }catch (Exception e){ System.out.println(e); } } return resultList; }
看測試代碼:
package com.johanChan.WebSocket.controller; import com.alibaba.fastjson.JSON; import com.johanChan.WebSocket.utils.BuildTree; import com.johanChan.WebSocket.utils.CommonUtils; import com.johanChan.WebSocket.utils.Tree; import com.johanChan.WebSocket.utils.TreeBuilder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @Controller public class TreeController { List<TreeBuilder.Node> nodeList ; List<Tree<TreeBuilder.Node>> treeList; { nodeList = CommonUtils.buildNode(); treeList = CommonUtils.buildTree(); } @ResponseBody @RequestMapping("/getTreeJson") public String getTreeJson() { // List<TreeBuilder.Node> nodeList = CommonUtils.buildNode(); // String result = CommonUtils.buildTree(nodeList); List<Tree<TreeBuilder.Node>> resultList = BuildTree.build(treeList); String result = JSON.toJSONString(resultList); return result; } @ResponseBody @RequestMapping("/getChildren/{id}") public String getChildren(@PathVariable("id") Integer id) { // List<TreeBuilder.Node> nodeList = CommonUtils.buildNode(); List<TreeBuilder.Node> result = CommonUtils.getChildren(id,nodeList); // String jsonStr = JSON.toJSONString(result); String jsonStr = CommonUtils.buildTree(result); return jsonStr; } }
方法:getChildren/{id}就是了,啟動項目看看效果:
數據整理一下:
[ { "children":[ { "code":"豫A-1", "id":15, "level":5, "name":"金水區", "parentId":11 } ], "code":"豫A", "id":11, "level":4, "name":"鄭州", "parentId":7 }, { "code":"豫B", "id":12, "level":4, "name":"開封", "parentId":7 }, { "code":"豫C", "id":13, "level":4, "name":"洛陽", "parentId":7 }, { "code":"豫R", "id":14, "level":4, "name":"南陽", "parentId":7 } ]
已經得到了想要的數據,大家可以根據自己的需要修改一下就OK了。