用java获取一个菜单树
时间: 2024-03-16 21:47:24 浏览: 13
好的,假设您有一个菜单表格,其中包含菜单的 ID、名称、父菜单ID 等信息,您可以通过以下代码获取菜单树:
```java
public class MenuTree {
private List<Menu> menuList;
public MenuTree(List<Menu> menuList) {
this.menuList = menuList;
}
// 获取菜单树的根节点
public List<Menu> getRootMenus() {
List<Menu> rootMenus = new ArrayList<>();
for (Menu menu : menuList) {
if (menu.getParentId() == null) {
rootMenus.add(menu);
}
}
return rootMenus;
}
// 获取某个菜单的子菜单
public List<Menu> getChildMenus(Menu parentMenu) {
List<Menu> childMenus = new ArrayList<>();
for (Menu menu : menuList) {
if (parentMenu.getId().equals(menu.getParentId())) {
childMenus.add(menu);
}
}
return childMenus;
}
// 将菜单树转为 JSON 格式
public String toJson() {
JSONArray jsonArray = new JSONArray();
for (Menu menu : getRootMenus()) {
JSONObject jsonObject = toJson(menu);
jsonArray.add(jsonObject);
}
return jsonArray.toJSONString();
}
// 将某个菜单转为 JSON 格式
private JSONObject toJson(Menu menu) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", menu.getId());
jsonObject.put("name", menu.getName());
JSONArray childJsonArray = new JSONArray();
for (Menu childMenu : getChildMenus(menu)) {
JSONObject childJsonObject = toJson(childMenu);
childJsonArray.add(childJsonObject);
}
jsonObject.put("children", childJsonArray);
return jsonObject;
}
}
```
其中,Menu 表示菜单实体类,包含 ID、名称、父菜单ID 等属性,toJson 方法可以将菜单树转为 JSON 格式。使用方法示例:
```java
// 假设您已经从数据库中查询出菜单列表
List<Menu> menuList = getMenuListFromDatabase();
// 创建菜单树对象
MenuTree menuTree = new MenuTree(menuList);
// 获取菜单树的根节点
List<Menu> rootMenus = menuTree.getRootMenus();
// 将菜单树转为 JSON 格式
String json = menuTree.toJson();
```
其中,getMenuListFromDatabase 方法可以根据您的实际情况自行实现,返回一个包含菜单信息的 List。