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、运行结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

没有预兆目的地在哪,前进的脚步不能停下,

java树形菜单对象生成

相关文章:

你感兴趣的文章:

标签云: