java通过pid、parentId生成tree树形结构json集合
将pojo集合类根据pid自动生成树形json
以下为代码示例,参照网上进行调整过后的,应用于项目
////////////////////////////////////////BuildUICmb
package com.hbcw.finance.main.utils.UICmb;
import java.util.ArrayList;
import java.util.List;
/**
* 构建前端需要的树形结构字符串 @备注:
*
* @author: lili
* @create date:2018年10月17日
*/
public class BuildUICmb {
/**
* 将集合的pid对象转换有child的集合
* @param nodes
* @return
*/
public static <T> List<UICmbVo<T>> build_Trees(List<UICmbVo<T>> nodes) {
if (nodes == null) {
return null;
}
List<UICmbVo<T>> topNodes = new ArrayList<UICmbVo<T>>();
for (UICmbVo<T> children : nodes) {
String pid = children.getParentId();
if ("0".equals(pid)) {//根级结点
topNodes.add(children);
continue;
}
for (UICmbVo<T> parent : nodes) {
String id = parent.getValue();
if (id != null && id.equals(pid)) {//表示有子级结点,就给Children设置对象
if(null == parent.getChildren()){
parent.setChildren(new ArrayList<UICmbVo<T>>());
}
parent.getChildren().add(children);
//children.setParent(true);
//parent.setChildren(true);
continue;
}
}
}
return topNodes;
}
}
//////////////////////////////////////////////////////////TreeTmpBean
package com.hbcw.finance.main.utils.UICmb;
import java.io.Serializable;
/**
* 树形 pojo@备注:
*
* @author: lili
* @create date:2018年10月11日
*/
public class TreeTmpBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String id;//
private String name;// 单位全称/部门的名字',
private String pid;// 数据类型1公司2部门3职位',
public TreeTmpBean(){
super();
}
public TreeTmpBean(String id,String pid,String name){
this.id = id;
this.name = name;
this.pid = pid;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
}
//////////////////////////////////////////////////////////////////////UICmbVo
package com.hbcw.finance.main.utils.UICmb;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
/**
* 装返回的数据 @备注:
*
* @author: lili
* @create date:2018年10月17日
*/
public class UICmbVo<T> {
private String value;//代替树的id
private String label;//代替树显示的值
private List<UICmbVo<T>> children ;
//private List<Tree<T>> children = new ArrayList<Tree<T>>();
private String code;
/**
* 父ID
*/
private String parentId;
///**
// * 是否有父节点
// */
//private boolean isParent = false;
///**
// * 是否有子节点
// */
//private boolean isChildren = false;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public List<UICmbVo<T>> getChildren() {
return children;
}
public void setChildren(List<UICmbVo<T>> children) {
this.children = children;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
//public boolean isParent() {
//return isParent;
//}
//
//public void setParent(boolean isParent) {
//this.isParent = isParent;
//}
//
//public boolean isChildren() {
//return isChildren;
//}
//
//public void setChildren(boolean isChildren) {
//this.isChildren = isChildren;
//}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
//////////////////////////////////////////////////////T.java 测试类
package com.hbcw.finance.main.utils.UICmb;
import java.util.ArrayList;
import java.util.List;
public class T {
public static void main(String[] args) {
List<UICmbVo<TreeTmpBean>> trees = new ArrayList<UICmbVo<TreeTmpBean>>();
List<TreeTmpBean> tests = new ArrayList<TreeTmpBean>();
//多级的json数组
tests.add(new TreeTmpBean("0000", "0", "编程语言"));
tests.add(new TreeTmpBean("01", "0000", "c++"));
tests.add(new TreeTmpBean("02", "0000", "java"));
tests.add(new TreeTmpBean("0101", "01", "MFC"));
tests.add(new TreeTmpBean("0201", "02", "spring"));
tests.add(new TreeTmpBean("0202", "02", "hadoop"));
tests.add(new TreeTmpBean("020101", "0202", "hdfs"));
tests.add(new TreeTmpBean("020102", "0202", "hbase"));
tests.add(new TreeTmpBean("10121113342220000", "0", "学科"));
tests.add(new TreeTmpBean("000201", "10121113342220000", "语文"));
tests.add(new TreeTmpBean("000202", "10121113342220000", "数学"));
for (TreeTmpBean test : tests) {
UICmbVo<TreeTmpBean> tree = new UICmbVo<TreeTmpBean>();
tree.setValue(test.getId());
tree.setParentId(test.getPid());
tree.setLabel(test.getName());
trees.add(tree);
}
List<UICmbVo<TreeTmpBean>> t = BuildUICmb.build_Trees(trees);
String json = t.toString();
System.out.println(json);
}
}
相关推荐
树形结构,包含parentid,可直接传入ui组件显示 { "value": "120000", "label": "天津", "children": [ { "value": "120100", "label": "市辖区", "parentid": "120000", "children": [ { "value": "120101...
一、数据库父子结构数据设计 大部分采用 parentId的形式来存储父id,并且只存储父id,祖父Id不存储。也可以添加存储层级级别或者层级关系等字段。 CREATE TABLE `t_resource` ( `id` varchar(255) NOT NULL ...
java 生成树结构的数据格式返回给前端。。这是demo最后生成的数据格式:[{"id":1,"name":"名字1","parentId":0,"children":[{"id":3,"name":"名字3","parentId":1,"children":[{"id":7,"name":"名字7","parentId":3,...
前台: function listToTree(myId,pId,list){ function exists(list, parentId){ for(var i=0; i<list.length; i++){ if (list[i][myId] == parentId) return true; } return false;
根据文件列表构建树形结构的父子关系 代码生成结果: {id=1, parentId=0, children=[{id=4, parentId=1, children=[{id=7, parentId=4, children=[], name=节点7, level =2}, {id=8, parentId=4, children=[], name=...
自己整理的全国行政区划表,包含一个树形表格式为 id name parentId code格式
charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <!-- 数据库结构: 库名:test 表名:tree CREATE TABLE [dbo].[tree] ( [id] [int] IDENTITY (1, 1) NOT NULL , [parentid] [int] NOT...
在原有的基础上进行二次修改,通过ajax请求,获取json数组,迭代json数组生成多层级的数据字典。当前例子中数据源为模拟的json数据。当然该方法是支持无限级父子关系。修改之前的源码均来自网上,本人只是对当前做了...
"parentId": 100000, "levelType": 1, "children": [ { "id": 110100, "label": "北京城区", "value": "北京城区", "parentId": 110000, "levelType": 2, "children": [ {...} ] } ] }
json数组生成json树形结构工具类,有id,parentId的json对象数组,支持无限级
//设定生成树的原始数据 void getdatable() { tblDatas.Columns.Add("groupid", Type.GetType("System.String")); tblDatas.Columns.Add("groupname", Type.GetType("System.String")); tblDatas.Columns.Add...
)树API traverse(tree, startingNodeId, fn) get(tree, id) hasChild(node) hasChildDescendant(tree, parentId, childId) hasNext(node) parent(tree, id) child(tree, id) next(tree, id) prev
parentID.equals(""))//如果不为null和空 { Category category = new Category(Integer.parseInt(parentID));//创建Category对象 TreeviewElement[] top = category.getChildren();//得到该分类的所有下级...
微信小程序关系树组件tree组件参数:tree: Array,目录树结构,参见okrgraph.js,必填init-member-id: Array,初始化成员id,必填selectChange:点击成员回调函数,回调函数参数为点击的成员信息成员字段:level: ...
把JSON数据格式化为扁平化的数组数据(包含树的级别Level) 原数据: var flat = [{ desc : null, 'org_unit_list_rank' : 99999, ouid : "16ysu94iv7", 'ouid_name' : "RD", pid : "d24mw0ayx3" }, { desc ...
2020全国省市县行政区划编码,格式为JSON格式,例如:[{"id":1,"name":"北京","parentid":0,"parentname":"","areacode":"010","zipcode":"100000","depth":1},{"id":2,"name":"安徽","parentid":0,"parentname":"",...
this.RecursiveTree1.DataTextField("菜单配置","Menu_ID", "Menu_ParentID", "Menu_Name", "Menu_Url", "Menu_Name","",""); 具体重载方法 说明 添加引用后,控件名.点 自行查看... //这里改写成你的数据库链接.. ...
Oracle中的select语句可以用START WITH... id,parentid那么通过表示每一条记录的parent是谁,可以形成一个树状结构。 用上述语法的查询可以取得这棵树的所有记录。 其中COND1是根结点的限定语句,当然可以放宽
根据ID,ParentID绑定treeview生成树。
parentId: 0, }, { id: 2, name: "目录1-1", parentId: 1, }, { id: 3, name: "目录1-2", parentId: 1, }, { id: 4, name: "目录1-1-1", parentId: 2, }, { id: 5, name: "目录1-1-...