java树形菜单对象生成
作者:张兵游勇
这篇文章主要为大家详细介绍了java树形菜单对象生成,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了java树形菜单对象生成的具体代码,供大家参考,具体内容如下
1、TreeNode对象
package com.ruoyi.system.utils.Vo; import java.util.ArrayList; import java.util.List; public class TreeNode { /** * 节点ID */ private Integer id; /** * 节点名称 */ private String name; /** * 父节点ID */ private Integer parentId; /** * 子节点列表 */ private List childrenList = new ArrayList(); public Integer getId() { return id; } public void setId(Integer id) { this.id=id; } public String getName() { return name; } public void setName(String name) { this.name=name; } public Integer getParentId() { return parentId; } public void setParentId(Integer parentId) { this.parentId=parentId; } public List getChildrenList() { return childrenList; } public void setChildrenList(List childrenList) { this.childrenList=childrenList; } }
2、TreeUtil
package com.ruoyi.system.utils; import com.ruoyi.system.utils.Vo.TreeNode; import java.util.ArrayList; import java.util.List; public class TreeUtil { private List<TreeNode> treeNodeList =new ArrayList<>(); public TreeUtil(List<TreeNode> list){ treeNodeList = list; } /** * 获取节点信息 * @param nodeId 节点ID * @return */ public TreeNode getNodeById(int nodeId){ TreeNode treeNode = new TreeNode(); for (TreeNode item : treeNodeList) { if (item.getId() == nodeId) { treeNode = item; break; } } return treeNode; } /** * 获取子节点信息 * @param nodeId 节点ID * @return */ public List<TreeNode> getChildrenNodeById(int nodeId){ List<TreeNode> childrenTreeNode = new ArrayList<TreeNode>(); for (TreeNode item : treeNodeList) { if(item.getParentId() == nodeId){ childrenTreeNode.add(item); } } return childrenTreeNode; } /** * 递归生成Tree结构数据 * @param rootId 根节点ID * @return */ public TreeNode generateTreeNode(int rootId){ TreeNode root = this.getNodeById(rootId); List<TreeNode> childrenTreeNode = this.getChildrenNodeById(rootId); for (TreeNode item : childrenTreeNode) { TreeNode node = this.generateTreeNode(item.getId()); root.getChildrenList().add(node); } return root; } public static void main(String[] args) { List<TreeNode> nodeList = new ArrayList<>(); TreeNode treeNode = new TreeNode(); treeNode.setId(1); treeNode.setName("中国"); treeNode.setParentId(0); nodeList.add(treeNode); treeNode = new TreeNode(); treeNode.setId(2); treeNode.setName("北京市"); treeNode.setParentId(1); nodeList.add(treeNode); treeNode = new TreeNode(); treeNode.setId(3); treeNode.setName("浙江省"); treeNode.setParentId(1); nodeList.add(treeNode); treeNode = new TreeNode(); treeNode.setId(4); treeNode.setName("杭州市"); treeNode.setParentId(3); nodeList.add(treeNode); treeNode = new TreeNode(); treeNode.setId(5); treeNode.setName("西湖区"); treeNode.setParentId(4); nodeList.add(treeNode); treeNode = new TreeNode(); treeNode.setId(6); treeNode.setName("滨江区"); treeNode.setParentId(4); nodeList.add(treeNode); treeNode = new TreeNode(); treeNode.setId(7); treeNode.setName("金华市"); treeNode.setParentId(3); nodeList.add(treeNode); TreeUtil treeUtil = new TreeUtil(nodeList); treeNode = treeUtil.generateTreeNode(1); System.out.println("树状结构Json格式数据:" + JsonUtils.objectToJson(treeNode, 1)); } }
3、JsonUtil
package com.ruoyi.system.utils; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; public class JsonUtils { // 定义jackson对象 private static final ObjectMapper MAPPER = new ObjectMapper(); /** * 将对象转换成json字符串 * @param obj 需转换的对象 * @param flag Json格式化标识(0-否,1-是) * @return */ public static <T> String objectToJson(T obj, int flag) { if (obj == null) { return null; } try { String string; if (flag == 1) { string = obj instanceof String ? (String) obj : MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(obj); } else { string = obj instanceof String ? (String) obj : MAPPER.writeValueAsString(obj); } return string; } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } /** * 将json结果集转化为对象 * * @param jsonData json数据 * @param beanType 对象中的object类型 * @return */ public static <T> T jsonToPojo(String jsonData, Class<T> beanType) { try { T t = MAPPER.readValue(jsonData, beanType); return t; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 将json数据转换成pojo对象list * <p>Title: jsonToList</p> * <p>Description: </p> * @param jsonData * @param beanType * @return */ public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) { JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); try { List<T> list = MAPPER.readValue(jsonData, javaType); return list; } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) { System.out.println("测试字符串对象:" + objectToJson("hello world", 1)); } }
4、运行结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。