`
mr.lili
  • 浏览: 150180 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类

java通过pid、parentId生成tree树形结构json集合.将pojo集合类根据pid自动生成树形json

 
阅读更多

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);

  }

}

 

 

 

分享到:
评论

相关推荐

    全国省市区JSON,包含parentid

    树形结构,包含parentid,可直接传入ui组件显示 { "value": "120000", "label": "天津", "children": [ { "value": "120100", "label": "市辖区", "parentid": "120000", "children": [ { "value": "120101...

    Java 将有父子关系的数据转换成树形结构数据

    一、数据库父子结构数据设计  大部分采用 parentId的形式来存储父id,并且只存储父id,祖父Id不存储。也可以添加存储层级级别或者层级关系等字段。 CREATE TABLE `t_resource` ( `id` varchar(255) NOT NULL ...

    java递归树结构.rar

    java 生成树结构的数据格式返回给前端。。这是demo最后生成的数据格式:[{"id":1,"name":"名字1","parentId":0,"children":[{"id":3,"name":"名字3","parentId":1,"children":[{"id":7,"name":"名字7","parentId":3,...

    java将list转为树形结构的方法(后台和前台)

    前台: function listToTree(myId,pId,list){ function exists(list, parentId){ for(var i=0; i&lt;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格式

    自己整理的全国行政区划表,包含一个树形表格式为 id name parentId code格式

    树形目录的递归实现数据库

    charset=gb2312" language="java" import="java.sql.*" errorPage="" %&gt; &lt;!-- 数据库结构: 库名:test 表名:tree CREATE TABLE [dbo].[tree] ( [id] [int] IDENTITY (1, 1) NOT NULL , [parentid] [int] NOT...

    js无限级分类递归

    在原有的基础上进行二次修改,通过ajax请求,获取json数组,迭代json数组生成多层级的数据字典。当前例子中数据源为模拟的json数据。当然该方法是支持无限级父子关系。修改之前的源码均来自网上,本人只是对当前做了...

    省市区三级联动tree数据,json

    "parentId": 100000, "levelType": 1, "children": [ { "id": 110100, "label": "北京城区", "value": "北京城区", "parentId": 110000, "levelType": 2, "children": [ {...} ] } ] }

    JsonArrayTreeUtils.java

    json数组生成json树形结构工具类,有id,parentId的json对象数组,支持无限级

    C#递归树的生成级Treeview空间的应用实例源码

    //设定生成树的原始数据 void getdatable() { tblDatas.Columns.Add("groupid", Type.GetType("System.String")); tblDatas.Columns.Add("groupname", Type.GetType("System.String")); tblDatas.Columns.Add...

    javascript-tree:JSON树数据结构的独特方法

    )树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

    ajax树形展示,JavaScript

    parentID.equals(""))//如果不为null和空 { Category category = new Category(Integer.parseInt(parentID));//创建Category对象 TreeviewElement[] top = category.getChildren();//得到该分类的所有下级...

    wx-tree-component:微信小程序目录树(关系树)组件

    微信小程序关系树组件tree组件参数:tree: Array,目录树结构,参见okrgraph.js,必填init-member-id: Array,初始化成员id,必填selectChange:点击成员回调函数,回调函数参数为点击的成员信息成员字段:level: ...

    treeMode 2.0

    把JSON数据格式化为扁平化的数组数据(包含树的级别Level) 原数据: var flat = [{ desc : null, 'org_unit_list_rank' : 99999, ouid : "16ysu94iv7", 'ouid_name' : "RD", pid : "d24mw0ayx3" }, { desc ...

    2020(最新)全国行政区域编码.json

    2020全国省市县行政区划编码,格式为JSON格式,例如:[{"id":1,"name":"北京","parentid":0,"parentname":"","areacode":"010","zipcode":"100000","depth":1},{"id":2,"name":"安徽","parentid":0,"parentname":"",...

    asp.net 无限递归树型菜单... 采用dTree封装的自定义控件

    this.RecursiveTree1.DataTextField("菜单配置","Menu_ID", "Menu_ParentID", "Menu_Name", "Menu_Url", "Menu_Name","",""); 具体重载方法 说明 添加引用后,控件名.点 自行查看... //这里改写成你的数据库链接.. ...

    Orcale查询树形结构

    Oracle中的select语句可以用START WITH...  id,parentid那么通过表示每一条记录的parent是谁,可以形成一个树状结构。  用上述语法的查询可以取得这棵树的所有记录。  其中COND1是根结点的限定语句,当然可以放宽

    根据ID,ParentID绑定treeview

    根据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-...

Global site tag (gtag.js) - Google Analytics