ztree 树形菜单结构转JSON

推荐阅读

AI文本 OCR识别最佳实践

AI Gamma一键生成PPT工具直达链接

玩转cloud Studio 在线编码神器

玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间

资源分享

史上最全文档AI绘画stablediffusion资料分享

AI绘画关于SD,MJ,GPT,SDXL百科全书

「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间
https://drive.uc.cn/s/2aeb6c2dcedd4
AIGC资料包
https://drive.uc.cn/s/6077fc42116d4
https://pan.xunlei.com/s/VN_qC7kwpKFgKLto4KgP4Do_A1?pwd=7kbv#

以layui侧边栏菜单为例,实现java以json形式返回给前端侧边栏菜单
在这里插入图片描述
前端很常见的侧边栏菜单展示,但是前端有些控件的格式有自己的风格,只要返回标准json就可以进行转换

从数据库结构开始
在这里插入图片描述
常用pid=o或者=null的时候为一级菜单,pid=id的为二级菜单
初步逻辑是
// 采用递归算法实现许可数据查询

		 * 1) 方法自己调用自己
		 * 2) 方法一定要有跳出的逻辑
		 * 3) 方法在调用自身时,传递的参数需要有规律

递归算法所体现的“重复”一般有三个要求

    (1) 每次调用在规模上都有所缩小(通常是减半);
    
    (2) 相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);
    
    (3) 在问题的规模极小时必须用直接给出解答而不再进行递归调用,
        因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),
        无条件递归调用将会成为死循环而不能正常结束。

方法一:
// 读取许可数据
//全部数据

		List<Permission> roots = permissionService.queryRootPermission();
		for ( Permission root : roots ) {
			// 查询子节点
			List<Permission> childPermissions = permissionService.queryChildPermissions(root.getId());
			
			// 查询子节点的子节点
			for ( Permission child : childPermissions ) {
				List<Permission> childChildPermissions = permissionService.queryChildPermissions(child.getId());

				child.setChildren(childChildPermissions);
			}
			
			// 组合父子节点的关系
			root.setChildren(childPermissions);
		}

方法二

Map<Integer, Permission> permissionMap = new HashMap<Integer, Permission>();
		for ( Permission permission : permissions ) {
			permissionMap.put(permission.getId(), permission);
		}
		for ( Permission permission : permissions ) {
			// 子节点
			Permission child = permission;
			if ( child.getPid() == 0 ) {
				roots.add(permission);
			} else {
				// 父节点
				Permission parent = permissionMap.get(child.getPid());
				// 组合父子节点的关系
				parent.getChildren().add(child);
			}
		}

对于前端特殊格式的json,可以根据需求进行json格式的重组

方法三:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值