前の記事では、ツリー構造のデータ統合JSON形式の2つの方法について説明し、第一の方法は、あなたを伝えるために単独で出て、ここで親に応じて、サブクラスのメソッドのすべてを取得しています。
それでも次のように、統合するために再帰を使用します。
// 親ノードとしてすべての子ノードを取得し 、パブリック 静的の一覧<TreeBuilder.Node> GetChildrenメソッド(PID整数、リスト<TreeBuilder.Node> nodelistと){ 一覧 <TreeBuilder.Node> resultList = 新しい ArrayListを<> (); もし(ヌル = nodelistと&& nodeList.size()> 0!){ 試み{ のために(TreeBuilder.Node層:nodelistと){ 場合(PID == layer.getParentId()){ // 添加子级节点 resultList.add(層); // 递归获取深层节点 resultList.addAll(GetChildrenメソッド(layer.getId()、nodelistと))。 } } } キャッチ(例外e){ System.out.println(e)は、 } } 返すresultListを。 }
テストコードを参照してください。
パッケージcom.johanChan.WebSocket.controllerを。 輸入com.alibaba.fastjson.JSON; 輸入com.johanChan.WebSocket.utils.BuildTree; 輸入com.johanChan.WebSocket.utils.CommonUtils。 輸入com.johanChan.WebSocket.utils.Tree; 輸入com.johanChan.WebSocket.utils.TreeBuilder。 輸入org.springframework.stereotype.Controller; 輸入org.springframework.web.bind.annotation.PathVariable; 輸入org.springframework.web.bind.annotation.RequestMapping。 輸入org.springframework.web.bind.annotation.ResponseBody。 輸入はjava.util.List; @コントローラ パブリック クラスTreeController { 一覧 <TreeBuilder.Node> nodelistと。 一覧 <ツリー<TreeBuilder.Node >> treeList。 { nodelistと = CommonUtils.buildNode()。 treeList = CommonUtils.buildTree()。 } @ResponseBody @RequestMapping( "/ getTreeJson" ) パブリック文字列getTreeJson(){ // リスト<TreeBuilder.Node> nodelistとCommonUtils.buildNode =(); // 文字列結果= CommonUtils.buildTree(nodelistと)。 一覧<ツリー<TreeBuilder.Node >> resultList = BuildTree.build(treeList)。 文字列結果 = JSON.toJSONString(resultList)。 戻り値の結果; } @ResponseBody @RequestMapping( "/ GetChildrenメソッド/ {ID}" ) パブリック文字列GetChildrenメソッド(@PathVariable( "ID" )、整数ID){ // リスト<TreeBuilder.Node> nodelistとCommonUtils.buildNode =(); リスト<TreeBuilder.Node>結果= CommonUtils.getChildren(ID、nodelistと)。 // 文字列jsonStr = JSON.toJSONString(結果)。 ストリングjsonStr = CommonUtils.buildTree(結果)。 返すjsonStrを。 } }
方法:GetChildrenメソッド/ {idが}の効果を確認するプログラムを開始したいです。
データ整頓:
[ { "子供" :[ { "コード": "豫A-1" 、 "ID" 15 、 "レベル":5 、 "名前": "金水区" 、 "PARENTID":11 } ]、 "コード": "豫A" 、 "ID":11 、 "レベル":4 、 "名前": "郑州" 、 "PARENTID":7 }、 { "コード": "豫B" 、 "ID":12 、 "レベル":4 、 "名前": "开封" 、 "PARENTID":7 }、 { "コード": "豫C" 、 "ID":13 、 "レベル":4 、 "名前": "洛阳" 、 "PARENTID":7 }、 { "コード": "豫R" 、 "ID":14 、 "レベル":4 、 "名前": "南阳" 、 "PARENTID":7 } ]
データを望まれていた、あなたはOKで自分のニーズに応じてそれを変更することができます。