一直以來沒工夫仔細琢磨菜單樹怎麼做,只知道遞歸,現在纔有空閒實現一次。
數據結構:
調用部分的代碼,瀏覽器地址爲:http://127.0.0.1:8080/admin/resource/menu?userId=23123
buildTree的代碼:
public JSONArray buildTree(List<Resource> resListAll, List<Resource> iteratedList, int parentId) { JSONArray arr = new JSONArray(); for (Resource resource : resListAll) { if (iteratedList.contains(resource)) { continue; } if (resource.getParentId() == parentId) { iteratedList.add(resource); String text = JSONObject.toJSONString(resource); JSONObject res = JSONObject.parseObject(text); arr.add(res); res.put("children", buildTree(resListAll, iteratedList, resource.getId())); } } return arr; }
結果:
{ "resourceTree": [{ "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "採購管理", "parentId": 0, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544149306000, "children": [{ "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "非日常採購", "parentId": 5, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 23, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "日常採購管理", "parentId": 5, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 22, "resourceType": "menu" }], "id": 5, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "場地管理", "parentId": 0, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544148935000, "children": [{ "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "合作酒店場地管理", "parentId": 4, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 21, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "會議室場地管理", "parentId": 4, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 20, "resourceType": "menu" }], "id": 4, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "支出管理", "parentId": 0, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544148987000, "children": [{ "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "投標支出管理", "parentId": 3, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [{ "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "星際投標", "parentId": 19, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [{ "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "仙女星雲投標", "parentId": 30, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544443215000, "children": [], "id": 33, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "銀河系投標", "parentId": 30, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544443211000, "children": [], "id": 32, "resourceType": "menu" }], "id": 30, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "國際投標", "parentId": 19, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 29, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "國內投標", "parentId": 19, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 28, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "省內投標", "parentId": 19, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 27, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "市內投標", "parentId": 19, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 26, "resourceType": "menu" }], "id": 19, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "日常支出管理", "parentId": 3, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 18, "resourceType": "menu" }], "id": 3, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "考勤管理", "parentId": 0, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544148905000, "children": [{ "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "會議考勤管理", "parentId": 2, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 17, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "日常考勤管理", "parentId": 2, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 16, "resourceType": "menu" }], "id": 2, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "系統管理", "parentId": 0, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544148843000, "children": [{ "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "簽到管理", "parentId": 1, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [{ "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "離場簽到", "parentId": 15, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 25, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "進場簽到", "parentId": 15, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 24, "resourceType": "menu" }], "id": 15, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "頁面管理", "parentId": 1, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 14, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "菜單管理", "parentId": 1, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 13, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "權限管理", "parentId": 1, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 12, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "", "orderNum": 0, "resourceDescription": "", "resourceName": "角色管理", "parentId": 1, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 11, "resourceType": "menu" }, { "resourceRemark": "", "resourceContent": "/", "orderNum": 0, "resourceDescription": "首頁頁面", "resourceName": "用戶管理", "parentId": 1, "resourceStatus": "disabled", "depth": 0, "resourceUrl": "", "createTime": 1544444261000, "children": [], "id": 10, "resourceType": "menu" }], "id": 1, "resourceType": "menu" }] }