用java代码将从数据库中取出的具有父子关系的数据转成json格式
思路:①、取出数据中的所有父节点放入一个集合中②、取出数据中所有为该父节点的子节点放入另一个集合中③、用到迭代的方法将子节点一层一层的遍历工具类:package com.assasion.test; import net.sf.json.JSONArray; import java.util.ArrayList;import java.util.List; public class TreeBuilder { List<CompanyNode> nodes = new ArrayList<CompanyNode>(); public TreeBuilder(List<CompanyNode> nodes) { super(); this.nodes= nodes; } /** * 构建JSON树形结构 * @return */ public String buildJSONTree() { List<CompanyNode> nodeTree = buildTree(); JSONArray jsonArray = JSONArray.fromObject(nodeTree); return jsonArray.toString(); } /** * 构建树形结构 * @return */ public List<CompanyNode> buildTree() { List<CompanyNode> treeNodes = new ArrayList<CompanyNode>(); List<CompanyNode> rootNodes = getRootNodes(); for (CompanyNode rootNode : rootNodes) { buildChildNodes(rootNode); treeNodes.add(rootNode); } return treeNodes; } /** * 递归子节点 * @param node */ public void buildChildNodes(CompanyNode node) { List<CompanyNode> children = getChildNodes(node); if (!children.isEmpty()) { for(CompanyNode child : children) { buildChildNodes(child); } node.setChild(children); } } /** * 获取父节点下所有的子节点 * @param pnode * @return */ public List<CompanyNode> getChildNodes(CompanyNode pnode) {//传入父节点对象,如果为该父节点的子节点,则放入子节点集合中 List<CompanyNode> childNodes = new ArrayList<CompanyNode>(); for (CompanyNode n : nodes){//从nodes中筛选所以为pnode的子节点 if (pnode.getCybh().equals(n.getSj_cybh())) { childNodes.add(n); } } return childNodes; } /** * 判断是否为根节点 * @param node * @return */ public boolean rootNode(CompanyNode node) { boolean isRootNode = true; for (CompanyNode n : nodes){//从nodes中筛选所以父节点 if (node.getSj_cybh().equals(n.getCybh())) {//判断传入的node对象中,他的上级成员编号还有没有node中的成员编号与之对应,如果没有,则为根节点 isRootNode= false; break; } } return isRootNode; } /** * 获取集合中所有的根节点 * @return */ public List<CompanyNode> getRootNodes() { List<CompanyNode> rootNodes = new ArrayList<CompanyNode>(); for (CompanyNode n : nodes){ if (rootNode(n)) { rootNodes.add(n);//把所以的根节点放入rootNodes集合中 } } return rootNodes; }}实体类:
package com.assasion.test; import java.util.List; public class CompanyNode { private String name ;//公司名称 private String cybh;//成员编号 private String sj_cybh;//上级成员编号 private List<CompanyNode> child;//下级公司 public CompanyNode() { } public CompanyNode(String name, String cybh, String sj_cybh,List<CompanyNode> child) { this.name = name; this.cybh = cybh; this.sj_cybh = sj_cybh; this.child=child; } public List<CompanyNode> getChild() { return child; } public void setChild(List<CompanyNode> child) { this.child = child; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCybh() { return cybh; } public void setCybh(String cybh) { this.cybh = cybh; } public String getSj_cybh() { return sj_cybh; } public void setSj_cybh(String sj_cybh) { this.sj_cybh = sj_cybh; }}
转载于:https://www.cnblogs.com/assasion/p/8035437.html
用java代码将从数据库中取出的具有父子关系的数据转成json格式相关推荐
- java向mysql写入数据慢_通过java代码往mysql数据库中写入日期相关数据少13个小时...
通过show variables like '%time_zone%'; 查看时区: CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard ...
- 把php数据转成json格式转换,php将从数据库中获得的数据转换成json格式并输出的方法...
php将从数据库中获得的数据转换成json格式并输出的方法 如下所示: header('content-type:application/json;charset=utf8'); $results = ...
- 怎么读取mysql库绘制柱状图_从数据库中取出最近三十天的数据并生成柱状图
在终端用cd 命令进入文件目录 说明:此处例子我是拿项目中的一个例子讲解的. 1.新建一个项目 :用终端输入:zf create project Airline 格式:zf create action ...
- mysql怎么制作柱状图_从数据库中取出最近三十天的数据并生成柱状图
在终端用cd 命令进入文件目录 说明:此处例子我是拿项目中的一个例子讲解的. 1.新建一个项目 :用终端输入:zf create project Airline 格式:zf create action ...
- 关于使用java程序从excel或者数据库中取出建表规则数据,自动生成数据库建表语句(适用于批量建数据库表)
公司开发新系统,需要创建几百个数据库表,建表的规则已经写好放到Excel中,如果手动创建的话需要占用较长的时间去做,而且字段类型的规则又被放到了另一张表,如果手动去一个一个去匹配就很麻烦,所以我先把两 ...
- c 将图片存入到mysql数据库中_如何将图片转换存入到数据库中,并从数据库中取出转换成图片...
有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来. 首先,我们要把图片存 ...
- 基于Java线程池读取数据库中数据(学习+运用)
基于Java线程池读取数据库中数据(学习+运用) 以下是学习内容 Main.java import java.util.concurrent.ArrayBlockingQueue; import ja ...
- 获取mysql可行方法_Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法...
<Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法>要点: 本文介绍了Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法,希望对您有用.如果有 ...
- eclipes Java代码连接Mysql数据库
Java代码连接Mysql数据库C 一.插件的下载与加载 1.下载与本地的MySQL对应版本的连接数据库的包,如mysql-connector-java-8.0.17.jar 下载Connector/ ...
最新文章
- What Are Words(一诺千金)
- jsp中include指令和动作的区别
- Dynamic Setting ImageUrl In DataPager
- 在数组中查找指定元素_剑指 offer 第一题: 二维数组中的查找
- [数据库] Navicat for MySQL定时备份数据库及数据恢复
- java 高手_Java高手是怎样炼成的
- 【区块链】认识区块链的基本概念
- java ranger rest_使用REST
- 手机上调试html,在手机上打印调试信息 – debug.js
- javabean反射改字段内容_JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)...
- 10分钟带你了解python_10分钟Python入门系列教程及学习资源分享
- 如何查看文件md5值
- [python]LDA模型使用流程及代码
- Win8.1 KB2919355更新无法正常安装完成,解决办法?
- 不意外:Facebook上市遭遇滑铁卢
- 银河麒麟操作系统常用问题及解决方法
- 四级高频词汇360个
- 入门级移动App服务器的软硬件需求
- 病毒RNA提取:EpiQuik 病毒RNA提取纯化试剂盒方案
- varnish php,php实现监控varnish缓存服务器的状态_PHP
热门文章
- opencv python 生成画布_第16章 坚持一百秒(《Python趣味创意编程》教学视频)
- ElasticFusion: Dense SLAM without A pose Graph
- 图谱特征与卷积神经网络的名优大米无损鉴别
- matlab快速将几幅图片放在一幅图片
- 只在用户登陆时运行_linux 系统的7个运行级别
- 基于知识库的自动问答:seq2seq模型实践
- 谷歌免费GPU,在线Jupyter notebook深度学习环境
- kafka数据 落盘_终于知道Kafka为什么这么快了!
- 7个等级 容灾等级_在餐厅吃饭竟是7级风险!最新社交风险等级出炉!
- 动态取值_软件测试|动态测试技术