public JSONArray getba01(@PathVariable String bzt002){
//return baseService.getBa01List(bzt002);
List<Ba01> ba01List = baseService.getBa01List(bzt002);
JSONArray listToTree = listToTree(JSONArray.parseArray(JSON.toJSONString(ba01List)), "bzt001", "bzt002", "children");
return listToTree;
}
/**
* listToTree
* <p>方法说明<p>
* 将JSONArray数组转为树状结构
* @param arr 需要转化的数据
* @param id 数据唯一的标识键值
* @param pid 父id唯一标识键值
* @param child 子节点键值
* @return JSONArray
*/
public static JSONArray listToTree(JSONArray arr,String id,String pid,String child){
JSONArray r = new JSONArray();
JSONObject hash = new JSONObject();
//将数组转为Object的形式,key为数组中的id
for(int i=0;i<arr.size();i++){
JSONObject json = (JSONObject) arr.get(i);
hash.put(json.getString(id), json);
}
//遍历结果集
for(int j=0;j<arr.size();j++){
//单条记录
JSONObject aVal = (JSONObject) arr.get(j);
//在hash中取出key为单条记录中pid的值
JSONObject hashVP = (JSONObject) hash.get(aVal.get(pid).toString());
//如果记录的pid存在,则说明它有父节点,将她添加到孩子节点的集合中
if(hashVP!=null){
//检查是否有child属性
if(hashVP.get(child)!=null){
JSONArray ch = (JSONArray) hashVP.get(child);
ch.add(aVal);
hashVP.put(child, ch);
}else{
JSONArray ch = new JSONArray();
ch.add(aVal);
hashVP.put(child, ch);
}
}else{
r.add(aVal);
}
}
return r;
}
将JSONArray数组转为树状结构
原创
©著作权归作者所有:来自51CTO博客作者Zy开发的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:Manacher算法
下一篇:记Java开发的一次面试
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【数据结构】树状数组
都说树状数组思路很难,那我们今天就给他讲个透彻!lowbit运算lowbit的作用就是返回一个数从右往左数
c++ 数据结构 树状数组 区间查询 #include -
【数据结构】树状数组【模板】
证明什么的待补一维问题 E: 单点修改,区间查询#pragma GCC optimize(2)#pragma GCC optim
数据结构 #include c++ 区间查询 -
Java数据结构-树状数组
什么是树状数组?[面试5.0]使用数组表示多叉树的结构,和优先队列有点类似,区别在于优先队列只表示二叉树主
java 数据结构 spring spring boot 树状数组 -
数据结构_树状数组 详解
数据结构_树状数组 详解一、简介/前导1.前导2.简介二、树状数组 详解1.区间查询 详解2.单点修改 详解3.两种操作的具体实现三
算法 数据结构 树结构 树状数组 点修改