后台数据转树形结构返回前台

查询出来的数据返回给前端呈树状Json格式 //用List构建带有层次结构的json数据 //List父子节点构造树形Json //将list集合转成树形结构的list集合 public static List<TConMenu> listToTree(List<TConMenu> list) { //用递归找子。 List<TConMenu> treeList = new ArrayList<TConMenu>(); for (TConMenu tree : list) { 阅读详情

前台向后台请求数据时可能会希望能得到一个树结构的数据结构,方便我们前台获取和使用,也能使得数据结构清晰。这时候需要,后台将数据转化为树形结构。整体思路为:

1. 定义树形结构的实体类
2. 新建工具类,利用递归算法,将数据循环遍历并且返回
3. 在controller层,将工具类开辟空间,调用其中的递归算法

代码如下:
1,实体类

public class Tree {

	private String id;//主键
	private String parent_code;//父级编码
	private String tree_name;//树结构的名字
	
	private String isparent;//是否是父极
	private String tree_sort;//排序
	private String tree_img;//树结构的图片
	//get和set方法省略,各位自己生成
}

2,定义工具类

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class MenuTreeUtil {
	   
	  public static Map<String,Object> mapArray = new LinkedHashMap<String, Object>(); 
	  public List<Tree> menuCommon; 
	  public List<Object> list = new ArrayList<Object>(); 
	    
	  public List<Object> menuList(List<Tree> menu){ //controller层调用的方法   ,并将数据以list的形式返回
	    this.menuCommon = menu; 
	    for (Tree x : menu) {   
	      Map<String,Object> mapArr = new LinkedHashMap<String, Object>(); 
	      if(x.getIsparent().equals("true")&&x.getParent_code().equals("0")){ //判断是否为父极
	        mapArr.put("id", x.getId()); 
	        mapArr.put("tree_name", x.getTree_name());  
	        mapArr.put("parent_code", x.getParent_code());
	        mapArr.put("hasChildren", x.getIsparent());
	        mapArr.put("tree_img", x.getTree_img());
	        mapArr.put("tree_sort", x.getTree_sort());
	        
	        
	        mapArr.put("child", menuChild(x.getId()));  //去子集查找遍历
	        list.add(mapArr); 
	      } 
	    }   
	    return list; 
	  } 
	   
	  public List<?> menuChild(String id){ //子集查找遍历
	    List<Object> lists = new ArrayList<Object>(); 
	    for(Tree a:menuCommon){ 
	      Map<String,Object> childArray = new LinkedHashMap<String, Object>(); 
	      if(a.getParent_code().equals(id) ){ 
	        childArray.put("id", a.getId()); 
	        childArray.put("tree_name", a.getTree_name()); 
	        childArray.put("parent_code", a.getParent_code());
	        
	        childArray.put("tree_img", a.getTree_img());
	        childArray.put("tree_sort", a.getTree_sort());
	        childArray.put("hasChildren", a.getIsparent());
	        childArray.put("child", menuChild(a.getId()));
	        lists.add(childArray); 
	      } 
	    } 
	    return lists; 
	  } 
	 
	}

3, controller层调用(代码有删减,主要思路1,循环遍历从数据库从查询的所有数据。2,为利用工具类方法的set和get方法,将数据放到list中3,将新生成的list数据,提交给工具类)

@PostMapping(value = "/queryTree")
	public Object findPage() {

		Map<String, Object> returnMap = new HashMap<>();
		List<PageData> lists = regionTreeService.findRegionTreePage(pd);//所有数据未转化成树结构
		
		MenuTreeUtil menuTree = new MenuTreeUtil();//定义工具类
		List<Tree> lt = new ArrayList<Tree>();//定义实体类
		for (int i = 0; i < lists.size(); i++) {//遍历获取数据
			Tree t = new Tree(); //转化成对象
			t.setId((String) lists.get(i).get("id"));//将数据赋给实体类
			t.setTree_name((String) lists.get(i).get("tree_name"));
			t.setParent_code((String) lists.get(i).get("parent_code"));
			t.setIsparent((String) lists.get(i).get("isparent"));
			t.setTree_img((String) lists.get(i).get("tree_img"));
			t.setTree_sort((String) lists.get(i).get("tree_sort"));
			t.setIsparent((String) lists.get(i).get("isparent"));
			lt.add(t);
		}
		System.out.println(lt);
		List<Object> menuList = menuTree.menuList(lt);//所有数据转化成树结构
		returnMap.put("list", menuList);
		return returnMap;
	}

总体效果:

{
    "total": 11,
    "list": [
        {
            "id": "954564617615548416",
            "tree_name": "中国",
            "parent_code": "0",
            "hasChildren": "true",
            "tree_img": "/img.aaa.jpg",
            "tree_sort": "0",
            "child": [
                {
                    "id": "954570573374636032",
                    "tree_name": "北京",
                    "parent_code": "954564617615548416",
                    "tree_img": "/img.aaa.jpg",
                    "tree_sort": "0",
                    "hasChildren": "true",
                    "child": [
                        {
                            "id": "954827144123908096",
                            "tree_name": "昌平",
                            "parent_code": "954570573374636032",
                            "tree_img": "/img.aaa.jpg",
                            "tree_sort": "0",
                            "hasChildren": "false",
                            "child": []
                        },
                        {
                            "id": "954827187873013760",
                            "tree_name": "丰台",
                            "parent_code": "954570573374636032",
                            "tree_img": "/img.aaa.jpg",
                            "tree_sort": "10",
                            "hasChildren": "false",
                            "child": []
                        }
                    ]
                },
                {
                    "id": "954826845157756928",
                    "tree_name": "太原",
                    "parent_code": "954564617615548416",
                    "tree_img": "/img.aaa.jpg",
                    "tree_sort": "0",
                    "hasChildren": "true",
                    "child": [
                        {
                            "id": "954925121096708096",
                            "tree_name": "太原火车",
                            "parent_code": "954826845157756928",
                            "tree_img": "/img.aaa.jpg",
                            "tree_sort": "10",
                            "hasChildren": "false",
                            "child": []
                        },
                        {
                            "id": "954925161051533312",
                            "tree_name": "太原景点",
                            "parent_code": "954826845157756928",
                            "tree_img": "/img.aaa.jpg",
                            "tree_sort": "10",
                            "hasChildren": "false",
                            "child": []
                        }
                    ]
                },
                {
                    "id": "954826941573419008",
                    "tree_name": "大同",
                    "parent_code": "954564617615548416",
                    "tree_img": "/img.aaa.jpg",
                    "tree_sort": "0",
                    "hasChildren": "true",
                    "child": [
                        {
                            "id": "954925603377143808",
                            "tree_name": "大同花园",
                            "parent_code": "954826941573419008",
                            "tree_img": "/img.aaa.jpg",
                            "tree_sort": "10",
                            "hasChildren": "false",
                            "child": []
                        },
                        {
                            "id": "954925632135364608",
                            "tree_name": "大同火车站",
                            "parent_code": "954826941573419008",
                            "tree_img": "/img.aaa.jpg",
                            "tree_sort": "10",
                            "hasChildren": "false",
                            "child": []
                        }
                    ]
                }
            ]
        }
    ]
}
将服务器后台返回的数据转换为树结构数据给前台        我们在前台向后台请求数据时可能会希望能得到一个树结构的数据结构,方便我们前台获取和使用,也能使得数据结构清晰,一目了然,树结构一般情况在我遇到的项目中都是某个表的自关联,使用到子父节点的关系,我们一般情况下可能会有这样的需求,获取全部数据或根据父节点获取子节点所有数据,如果我们直接返回数据,会让数据显得很乱,没有层次关系,所以我们需要使用树结构,我们先看一张图了解一下树结构:我这里随... 阅读详情

相关推荐

java 处理树形结构数据

java 处理树形结构数据

congge_study的博客 1万+

java返回前端树形结构数据(2种实现方式)

java返回前端树形结构数据(2种实现方式)

我的青春一去不复返 3490

java 二维码生成及其标签打印

本文主要内容 二维码生成 二维码标签预览及打印 二维码生成 笔者此次的二维码是通过调用第三方接口生成的,具体流程如下: 根据规范要求调用第三方接口,返回二维码下载地址及二维码图片的属性值(图片大小等) 根据返回的值获取二维码下载地址,根据地址下载二维码图片,保存至本地磁盘及记录数据信息 扫描二维码跳转相应地址,显示资产的基本信息 最终生成的二维码如下图所示: 预览并批量打印二维码标签 先...

孙小牟的博客 4941

Java后台返回树形结构的二种方式

【代码】Java后台返回树形结构的二种方式。

七一 4800

STM32G0实战:手把手教你用国产GD25Q16 Flash存储传感器数据(附完整驱动)

本文详细介绍了如何使用国产GD25Q16 Flash芯片与STM32G0系列MCU实现传感器数据存储的完整方案。从SPI接口配置、驱动层实现到存储系统架构设计,提供了实战代码和优化策略,帮助开发者快速构建高性价比的物联网数据存储系统。

weixin_30733003的博客 106

AWD线下攻防赛总结

在本地组策略编辑器里面,依次展开计算机配置—>管理模板—>Windows组件—>远程桌面服务—>远程桌面会话主机—>连接—>限制连接的数量。8.Web目录环境查找相关可疑文件:jpg/png/rar,属性、解压。进程线程:netstat / ps -aux/netstat -apt。4.查看/etc/init.d/rc.local中启动服务有无异常。1.不使用默认口令,修改成复杂的,并确保和web环境连接。5.使用脚本开启进程监控、目录监控、流量监控。文件操作监控.exe/御剑文件监控.exe。

XuJL89的博客 630

java lamda stream example

if(StringUtils.isNotBlank(listResultStr)){ BaseResult<List<Order>> result = JSON.parseObject(listResultStr, new TypeReference<BaseResult<List<Order>>>(){}); if(r...

大树叶 技术专栏 373

【WB32库开发】第9章 TIM1高级定时器——输出多路PWM

PWM(Pulse Width Modulation)意为脉冲宽度调制,简称脉宽调制 。在工控行业,PWM信号可以用来调节电机转速、调节变频器以及BLDC电机驱动等;在LED照明行业,可以通过PWM来控制LED的亮暗变化;还可以通过PWM信号来控制无源蜂鸣器发出简单的声音等。 WB32也可输出PWM,需配置WB32上的定时器。 在WB32中有4个定时器,其中TIM1为高级定时器,TIMx(2-4)为通用定时器,这四个定时器均挂载在APB1总线上,每个定时器都可以输出4路PWM。 本章需要使用固件库TIM例程

北海村夫的博客 4637

Java后台返回实现前端树形结构数据

Java后台实现前端树形结构数据

北执南念的博客 1967

基于FLUENT的圆柱绕流数值模拟与流场优化策略

本文详细介绍了基于FLUENT的圆柱绕流数值模拟方法与流场优化策略。从基础概念、建模技巧到湍流模型选择,全面解析了圆柱绕流模拟的关键技术,并提供了实用的网格划分和参数设置建议。通过具体案例展示了流动控制方法和优化流程,帮助工程师有效降低阻力系数,提升流场性能。

f6g7h8i9j的博客 705

AI 大模型接口太零散?自建私有模型管理平台统一整合,管理使用超方便!(支持飞牛nas、群晖nas等服务器快速部署)

面对多种 AI 大模型接口难统一、管理繁琐的问题🤯,本文分享一款超实用开源网关工具⚡,可聚合各大模型、自动转接口、支持可视化管理,Docker 一键部署,大幅降低开发与维护成本🚀

XiaoqiangClub的博客 266

Mybatis返回树形结构

在返回json数据时常常需要返回树形的结构,自己去写递归来构建树的话又太麻烦了。 下面介绍一种使用mybatis来返回树形结构的好方法 表结构展示 表里面需要记录父级Id Mybatis xml语句 第一次用过org_id找到符合的数据,返回给orgTreeMap,关键就在这个resultMap里面,有一个集合,集合又去调用了getOrgByParentId方法,该方法把查询的到的org_id,...

BushRo 6505

UDF学习(四)FLUENT UDF-DEFINE_PROFILE宏

利用DEFINE_PROFLILE可以指定以下边界或计算域信息:DEFINE_PROFILE(name,t,i)//既可以用。

weixin_44386973的博客 1806

Java后台返回省市县树形结构

Java后台返回的数据格式如下: { "msg": "操作成功", "code": 0, "data": [ { "id": 100000, "name": "直辖市", "parentid": "000000", "code": "100000", "level": 1, "children": [ { "id": 100100, "name": "上海市

1只喵喵的博客 3792

eCognition易康操作教程(一):如何利用eCognition易康软件进行影像分割之棋盘分割、四叉树分割、光谱差异分割

进程执行完成后,植被覆盖区域与裸地区域合并了。第三步:清除分割结果,点击“Image Objects”菜单栏,点击“Delete Level(s)”,选中“ResultLevel1”,点击”ok”删除棋盘分割结果。四叉树分割之后,有的正方形大一些,有的正方形小一些,大说明该区域的光谱特性更加均一,而小说明不太均一。Leve:选择运行算法的矢量层名称,这里选择四叉树分割算法得到的矢量层“ResultLevel2”。Image Layer weights:图层权重,这里设置为“1,1,1,1”。

蒹葭苍苍 4608

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

最简便的list数据转树形结构方法(递归详细)

后台返回数据是一行一行的,但是前端展示要树形结构数据,所以需要我们自己处理函数了,小编在此献丑了,小写一个简便函数供大家参考,希望反馈一下。 返回数据格式 : var list= [ { name: '根目录1', id: 1, parentId: 0 }, { name: '根目录2', id: 2, parentId: 0 }, { name: '目录1-1', id: ...

js_admin的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java后台以树形结构返回省市区三级区域信息

欢迎访问个人博客德鲁大叔撸代码 在前台页面很常见的一种需求是,以树形结构展示具有层级关系的数据。比如企业的部门信息、大部分管理系统的菜单、省市区信息等等。 具体如下图所示 一、表创建以及数据导入 执行下面创建表sql,创建sys_region存具体信息,具体信息正在审核中,后续更新给出下载地址 CREATE TABLE `sys_region` ( `id` int(11) NOT NULL COMMENT '区域主键', `name` varchar(40) CHARACTER SET ut

m0_43584016的博客 8924

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

遍历后台返回数据生成树形结构

//遍历后台返回数据生成树形结构 var getTree=function(treeData,parentId){ var treeArr=[]; for(var i=0;i<treeData.length;i++){ var node=treeData[i]; if(node.sjchannelcode==parentId ){ var newNode={order:node.order,code:node.channelcode,url:node.url,name:node.name,sjchan

weixin_44037153的博客 788

后台返回树形结构数据给前端 算法

后台返回树形的数据结构

K_K177的博客 1199

Java实现树形结构的数据转Json格式

TreeBuilder.Node node = new TreeBuilder.Node(0,-1,"地球","WORD",1);TreeBuilder.Node node1 = new TreeBuilder.Node(1,0,"中国","CHN",1);TreeBuilder.Node node2 = new TreeBuilder.Node(2,1,"华北区域","A",2);TreeBuilder.Node node7 = new TreeBuilder.Node(7,6,"河南","豫",3);

m0_54901781的博客 1455

如何返回一个树形结构数据

前言: 树形结构在开发中还挺常见的,后端需要返回一个树形结构给前端,前端直接拿着这个树形结构展示在页面上。 正文: package com.test.nodefault; import com.test.model.TestNode; import com.test.model.vo.TestNodeVo; import org.springframework.beans.BeanUti...

Soup's Blog 5449

Java: 返回树形结构数据

Java - 返回树形结构数据 1.TreeNodeDto @Data public class TreeNodeDto { private Long id; private Long organizationId; private Long parentOrgId; private Integer level; private Integer ...

d3y1`5 81_09 2241

【通俗易懂】vue-elementul实现树形数据表格,后台返回的扁平化数组进行树形结构转换处理

效果图 需求是做一个这种的多层级表格,树形数据表格。 大家可能遇到的问题 一种是不知道如何做这种多层级的表格 一种是后台给自己返回的数据不是树形的,也就是没有子父级。全是一条条的扁平化数组。类似这样 而我们需要的结构是这样 那么问题就来了,我们如何把这一段数据给处理转换成树形结构呢。 我在网上看了好多的帖子学习,发现很多都是写的很复杂或者只写了一部分,那我就来弄一个全覆盖的额好了,从如何做表,到万一给你的是扁平数组如何转换成树行的。一次搞定 扁平数组转换树形结构方法 这个也是网上看到一个算法大佬的写法

seeeeeeeeeee的博客 6236

java数据返回树形结构

java数据返回树形结构 项目中使用到,所以就记录下,以后还会用到 数据库表: DirectoryResult: package cn.stylefeng.guns.modular.catalog.model.result; import lombok.Data; import java.util.Date; import java.io.Serializable; import java.math.BigDecimal; /** * <p> * 数据目录 * </p>

周不老的博客 1574

mybatis返回树形结构数据

mybatis返回树形结构数据 https://blog.youkuaiyun.com/BushQiang/article/details/100707245 <resultMap id="orgTreeMap" type="com.ylz.api.vo.OrgVO"> <result column="org_id" jdbcType="VARCHAR"...

我想静静 1157

使用js将后台返回的数据转换成树形结构

将类似如下数据转换成树形的数据: [ { id: 1, name: '1', }, { id: 2, name: '1-1', parentId: 1 }, { id: 3, name: '1-1-1', parentId: 2 }, { id: 4, name: '1-2', parentId: 1 }, { id: 5, name: '1-2-2', par...

weixin_30484739的博客 775
上一篇: CentOs下安装redis详细步骤及其解决方法
下一篇: mysql临时表空间不足解决方案
只会debug
博客等级 码龄9年 69粉丝 41原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值