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);
}
}
相关推荐
1. 构建 JSON 数据源:树形控件需要将数据库中的层次数据转换成 JSON 格式的字符串,以便在客户端动态生成树形结构。 2. Ext JS 框架:这是一种富客户端开发框架,其 TreePanel 组件常用于实现树形视图,支持 ...
本主题将深入探讨如何将扁平化的数据转换成树形结构的JSON,以及如何将树形JSON扁平化。这些操作在数据处理、数据库设计和算法实现中十分常见。 首先,我们来理解“扁平化数据”。在计算机编程中,扁平化数据通常是...
在许多应用场景中,我们可能需要将扁平化的数据结构转换为树形结构,以便更好地理解和操作数据。扁平化数据通常是线性的,而树形结构则能反映数据之间的层级关系,这对于表示目录、菜单、组织结构等非常有用。本话题...
最后,前端JavaScript代码会通过Ajax请求从服务器获取到这个转换后的JSON数据,然后使用jsTree的API将其渲染成可视化的树形结构: ```javascript $("#mytree").jstree({ data: { type: "json", url: "${ctx}/...
本主题探讨的是如何通过一次集合遍历来实现树形结构,这在处理层级数据,如组织架构、文件系统或者菜单导航时非常有用。我们将主要关注Java编程语言以及Spring Boot框架中的应用。 首先,理解树形结构是至关重要的...
本文将详细介绍如何使用Java根据数据库表内容生成树结构的JSON数据。 首先,我们来看一个具体的利用场景。假设我们有一个组织机构表,其中包含code(代码)、pcode(上级代码)和name(组织名称)等字段。这样的...
树形结构,包含parentid,可直接传入ui组件显示 { "value": "120000", "label": "天津", "children": [ { "value": "120100", "label": "市辖区", "parentid": "120000", "children": [ { "value": "120101...
要将这些数据转换为树形结构的JSON字符串,我们需要设计一个算法或方法来遍历数据库中的层次数据并构造相应的JSON结构。 在Ext JS框架中,树形控件分为TreeNode和AsyncTreeNode两种。TreeNode用于静态树,而...
在IT领域,尤其是在前端开发中,树形结构(Tree Structure)是一种非常常见的数据表示方式,它模拟了自然界中的树状关系,用于组织和管理数据。在这个主题中,我们将深入探讨"AlaiJSCt tree",这是一个基于...
### 基于jsTree的无限级树JSON数据转换知识点详解 ...通过以上分析和实践,我们可以高效地将后端数据转换成 jsTree 所需的 JSON 结构,并成功渲染出无限级树形结构。这对于实现复杂的数据展现和管理具有重要意义。
在Java编程中,构建无限级分类树形结构是一项常见的任务,尤其在数据管理、文件系统或者网站导航等场景中。本教程将介绍如何利用Java来实现这种功能,并结合MySQL数据库进行数据存储,同时通过AJAX技术实现页面的...
本实例代码演示了如何利用Java语言根据数据库表内容生成树形结构的JSON数据。这种能力在多种场景下都非常有用,例如构建组织机构树、产品目录、网站导航结构等。 树形结构是一种常见的数据表现形式,它非常适合于...
"flex json转无限树形加单选框并获得选中子项 自动展开"这一主题涉及到多个技术点,包括JSON数据处理、无限层级树形结构的构建、单选框(checkbox)的实现以及节点的自动展开功能。下面将详细讲解这些知识点。 1. ...
这个“ajax获取嵌套JSON,树形控件显示”的示例主要涉及如何通过Ajax获取嵌套的JSON数据,并将其适配到ZTree的格式,以便在页面上以树形结构展示。 首先,我们需要理解JSON(JavaScript Object Notation)是一种轻...
在本示例中,我们将探讨如何使用Spring JPA来实现单表递归树形结构。 首先,我们需要理解递归树形结构。在数据库中,树形结构通常通过自关联来表示,即一个表的某个字段引用该表自身,形成一个层级关系。对于单表...
标题中的“java将list转为树形结构的方法(后台和前台)”指的是在Java编程语言中,如何将一个列表(List)数据结构转换为树形结构。这种转换通常用于处理层级关系的数据,如目录结构、组织架构等。转换分为前端...
这是最基础也是最常见的方法,通过递归函数遍历数据结构来生成树形结构。假设我们有一个JSON数组,每个对象代表一个节点,包含`id`、`children`(子节点数组)等属性: ```json [ { "id": 1, "parentId": null, ...
本文将深入探讨如何使用MyBatis进行父子级树形结构查询,避免繁琐的代码拼接。 首先,我们了解MyBatis的`collection`标签。在MyBatis的映射XML文件中,`<collection>`标签用于表示一对多的关系,它允许我们在一次...
在IT开发领域中,jsTree是一个流行的基于jQuery的插件,用于在网页中渲染树形结构的数据。它常被用于表示层次性的信息,如菜单、分类、权限结构等,具有丰富的API和可定制性,支持无限级树形结构的展开和收起。 ###...