查詢出來的資料返回給前端呈樹狀Json格式

2021-09-17 08:16:14 字數 1918 閱讀 1606

今天我帶來了怎麼給前端返回乙個樹狀json。關於有層級關係時我們應該怎麼做呢?

很多人可能會想到用遞迴這個方式,但是用遞迴的話… 稍不留神就陷入死迴圈。然後佔滿了棧。這個雷本小白踩過。哈哈哈。

好了,經過自己的不斷嘗試,最後用到了一種比較笨的方法來解決這個問題。雖然**比遞迴要多了那麼一丟丟,但是比較簡單。適合小白理解。往下看…

我剛開始用的是遞迴,咱們看看**

這是manage層

//用list構建帶有層次結構的json資料

//list父子節點構造樹形json

//將list集合轉成樹形結構的list集合

public static listlisttotree(listlist)

}return treelist;

}//尋找子節點

private static tconmenu findchildren(tconmenu tree, listlist)

tree.getchildren().add(findchildren(node, list));}}

return tree;

}

接著看看service層

public listselectmenutree()
這是測試service的test

@test

public void selecttree()

以上使用的是遞迴方式咱們看看執行結果

以上就是報的錯誤,目前我這個小白技術太菜了,陷入了死迴圈,堆滿了棧搞得棧溢位來了。這不能怪誰,怪自己。

但是… 我並沒有氣餒。我換了種方式,(奸笑~)

接著往下看。我用了個比較笨的辦法,

這是service層

private listdobuildmenutree(listmenulist)  else 

} //整理二級選單,放到一級選單的children節點鐘

listthreelevelmenulist = new arraylist<>();

maptwolevelmenumap = new hashmap<>();

dogatherchildren(onelevelmenumap, childrenmenulist, twolevelmenumap,threelevelmenulist);

//整理**選單,放到二級選單的children節點

listfourlevelmenulist = new arraylist<>();

mapthreelevelmenumap = new hashmap<>();

dogatherchildren(twolevelmenumap, threelevelmenulist, threelevelmenumap,fourlevelmenulist);

return onelevelmenulist;

} private void dogatherchildren(mapparentmenumap, listallchildrenlist,

mapchildrenmenumap, listchildrenlist ) else

} }

方法寫完了,接著就是呼叫了。

public listselectmenutree()
然後咱們看執行結果。

就出來了。凡事多嘗試幾次。

最後這個方法比較笨,用了幾個list幾個map。**量比較多。

但是能實現出來就好了。

查詢資料返回前端呈樹狀結構

首先sql查詢出的資料結構必須包含自己與自己的父級,sql查詢出的資料封裝到下面實體類 data 此註解是lombok的註解,可以幫我們生成setter getter方法 noargsconstructor lombok註解,生成無參構造 allargsconstructor lombok註解,生成...

MongoDB匯出查詢出來的資料集合

第一步 將查詢的結果生成一張臨時表 use 資料庫 var result db.集合名.find while result.hasnext db.temp 臨時表 insert result.next 第二步 需要認證 mongoexport h cdn或者ip d 資料庫名 port 埠號 use...

mysql刪除多表中查詢出來的資料

它文中的第三點是這樣寫的 3 從兩個表中找出相同記錄的資料並把兩個表中的資料都刪除掉 delete t1,t2 from t1 left join t2 on t1.id t2 id where t1.id 25 注意此處的delete t1,t2 from 中的t1,t2不能是別名 說t1,t2不...