java根据数据库表内容生产树结构json数据的方法
发布时间:2021-01-17 12:22:43 所属栏目:Java 来源:互联网
导读:1、利用场景组织机构树,通常会有组织机构表,其中有code(代码),pcode(上级代码),name(组织名称)等字段
|
1、利用场景 组织机构树,通常会有组织机构表,其中有code(代码),pcode(上级代码),name(组织名称)等字段 2、构造数据(以下数据并不是组织机构数据,而纯属本人胡编乱造的数据)
List<Tree<Test>> trees = new ArrayList<Tree<Test>>();
tests.add(new Test("0","","关于本人"));
tests.add(new Test("1","0","技术学习"));
tests.add(new Test("2","兴趣"));
tests.add(new Test("3","1","JAVA"));
tests.add(new Test("4","oracle"));
tests.add(new Test("5","spring"));
tests.add(new Test("6","springmvc"));
tests.add(new Test("7","fastdfs"));
tests.add(new Test("8","linux"));
tests.add(new Test("9","2","骑行"));
tests.add(new Test("10","吃喝玩乐"));
tests.add(new Test("11","学习"));
tests.add(new Test("12","3","String"));
tests.add(new Test("13","4","sql"));
tests.add(new Test("14","5","ioc"));
tests.add(new Test("15","aop"));
tests.add(new Test("16","等等"));
tests.add(new Test("17","等等"));
tests.add(new Test("18","等等"));
tests.add(new Test("19","等等"));
tests.add(new Test("20","等等"));
3、源码 Tree.java
package pers.kangxu.datautils.bean.tree;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
/**
* tree TODO <br>
*
* @author kangxu2 2017-1-7
*
*/
public class Tree<T> {
/**
* 节点ID
*/
private String id;
/**
* 显示节点文本
*/
private String text;
/**
* 节点状态,open closed
*/
private String state = "open";
/**
* 节点是否被选中 true false
*/
private boolean checked = false;
/**
* 节点属性
*/
private List<Map<String,Object>> attributes;
/**
* 节点的子节点
*/
private List<Tree<T>> children = new ArrayList<Tree<T>>();
/**
* 父ID
*/
private String parentId;
/**
* 是否有父节点
*/
private boolean isParent = false;
/**
* 是否有子节点
*/
private boolean isChildren = false;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public List<Map<String,Object>> getAttributes() {
return attributes;
}
public void setAttributes(List<Map<String,Object>> attributes) {
this.attributes = attributes;
}
public List<Tree<T>> getChildren() {
return children;
}
public void setChildren(List<Tree<T>> children) {
this.children = children;
}
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 getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public Tree(String id,String text,String state,boolean checked,List<Map<String,Object>> attributes,List<Tree<T>> children,boolean isParent,boolean isChildren,String parentID) {
super();
this.id = id;
this.text = text;
this.state = state;
this.checked = checked;
this.attributes = attributes;
this.children = children;
this.isParent = isParent;
this.isChildren = isChildren;
this.parentId = parentID;
}
public Tree() {
super();
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
BuildTree.java
package pers.kangxu.datautils.common.tree;
import java.util.ArrayList;
import java.util.List;
import pers.kangxu.datautils.bean.tree.Tree;
/**
* 构建tree
* TODO
* <br>
* @author kangxu2 2017-1-7
*
*/
public class BuildTree {
/**
*
* TODO
* <br>
* @author kangxu2 2017-1-7
*
* @param nodes
* @return
*/
public static <T> Tree<T> build(List<Tree<T>> nodes) {
if(nodes == null){
return null;
}
List<Tree<T>> topNodes = new ArrayList<Tree<T>>();
for (Tree<T> children : nodes) {
String pid = children.getParentId();
if (pid == null || "".equals(pid)) {
topNodes.add(children);
continue;
}
for (Tree<T> parent : nodes) {
String id = parent.getId();
if (id != null && id.equals(pid)) {
parent.getChildren().add(children);
children.setParent(true);
parent.setChildren(true);
continue;
}
}
}
Tree<T> root = new Tree<T>();
if (topNodes.size() == 0) {
root = topNodes.get(0);
} else {
root.setId("-1");
root.setParentId("");
root.setParent(false);
root.setChildren(true);
root.setChecked(true);
root.setChildren(topNodes);
root.setText("顶级节点");
}
return root;
}
}
BuildTreeTester.java
package pers.kangxu.datautils.test;
import java.util.ArrayList;
import java.util.List;
import pers.kangxu.datautils.bean.tree.Tree;
import pers.kangxu.datautils.common.tree.BuildTree;
public class BuildTreeTester {
public static void main(String[] args) {
List<Tree<Test>> trees = new ArrayList<Tree<Test>>();
List<Test> tests = new ArrayList<Test>();
tests.add(new Test("0","关于本人"));
tests.add(new Test("1","技术学习"));
tests.add(new Test("2","兴趣"));
tests.add(new Test("3","JAVA"));
tests.add(new Test("4","oracle"));
tests.add(new Test("5","spring"));
tests.add(new Test("6","springmvc"));
tests.add(new Test("7","fastdfs"));
tests.add(new Test("8","linux"));
tests.add(new Test("9","骑行"));
tests.add(new Test("10","吃喝玩乐"));
tests.add(new Test("11","学习"));
tests.add(new Test("12","String"));
tests.add(new Test("13","sql"));
tests.add(new Test("14","ioc"));
tests.add(new Test("15","aop"));
tests.add(new Test("16","等等"));
tests.add(new Test("17","等等"));
tests.add(new Test("18","等等"));
tests.add(new Test("19","等等"));
tests.add(new Test("20","等等"));
for (Test test : tests) {
Tree<Test> tree = new Tree<Test>();
tree.setId(test.getId());
tree.setParentId(test.getPid());
tree.setText(test.getText());
trees.add(tree);
}
Tree<Test> t = BuildTree.build(trees);
System.out.println(t);
}
}
class Test {
private String id;
private String pid;
private String text;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Test(String id,String pid,String text) {
super();
this.id = id;
this.pid = pid;
this.text = text;
}
public Test() {
super();
}
@Override
public String toString() {
return "Test [id=" + id + ",pid=" + pid + ",text=" + text + "]";
}
}
4、运行结果 JSON数据:
{
"checked": true,"children": [
{
"checked": false,"children": [
{
"checked": false,"children": [
{
"checked": false,"children": [
{
"checked": false,"children": [],"id": "12","parent": true,"parentId": "3","state": "open","text": "String"
},{
"checked": false,"id": "18","text": "等等"
}
],"id": "3","parentId": "1","text": "JAVA"
},{
"checked": false,"id": "13","parentId": "4","text": "sql"
},"id": "19","id": "4","text": "oracle"
},"id": "14","parentId": "5","text": "ioc"
},"id": "15","text": "aop"
},"id": "20","id": "5","text": "spring"
},"id": "6","text": "springmvc"
},"id": "7","text": "fastdfs"
},"id": "8","text": "linux"
},"id": "16","text": "等等"
}
],"id": "1","parentId": "0","text": "技术学习"
},{
"checked": false,"id": "9","parentId": "2","text": "骑行"
},"id": "10","text": "吃喝玩乐"
},"id": "11","text": "学习"
},"id": "17","id": "2","text": "兴趣"
}
],"id": "0","parent": false,"parentId": "","text": "关于本人"
}
],"id": "-1","text": "顶级节点"
}
以上就是小编为大家带来的java根据数据库表内容生产树结构json数据的方法全部内容了,希望大家多多支持编程小技巧~ (编辑:哈尔滨站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
