将数据库的树形结构的数据,转成JSON,用于树形列表显示

本文介绍了如何将具有树形结构的数据库数据转换为JSON格式,以适应树形列表的显示。例如,数据库中的一张表,通过PvGroupID和VGroupID字段建立父子关系,其中'总分组'作为根节点。利用递归算法,可以将这种关系转换成类似'[{"text":"总分组","nodes":[{"text":"运德","nodes":[{"text":"运德子1"},{"text":"运德子2"}]},{"text":"运美","nodes":[{"text":"运美子1"},{"text":"运美子2"}]}]}]'的JSON表示,呈现出对应的树状结构。" 52672548,5661610,C语言:不使用循环和条件语句打印1到1000,"['C语言编程', '程序设计', '逻辑运算', '预处理器宏']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图的数据库表,其中PvGroupID是其父结点的ID,VGroupID是自身的ID,名为总分组的结点,是根结点,他没有父结点

将该表的接树形结构转换成JSON数据表达格式。



例如:JSON=[{"text":"总分组","nodes":[{"text":"运德","nodes":[{"text":"运德子1"},{"text":"运德子2"}]},{"text":"运美","nodes":[{"text":"运美子1"},{"text":"运美子2"}]}]}]

这个JSON表示如下结构



生成这样的JSON运用一个递归算法

public  String toJson(long id) throws Exception{
		String json1="";
			 List<VehicleGroupInfoBo> list= vGroupDao.getVGroupList(id);
			 VehicleGroupInfoBo vgbo=vGroupDao.getVehicleGroupInfoBoById(id);
			if(list==null){
				List<VehicleInfoBo> listv=vInfoDao.getVehicleList(id);
				if(listv==null){
					json1=json1+"{\"text\":\""+vgbo.getGroupName()+"\"}";
				}else{
					json1=json1+"{\"text\":\""+vgbo.getGroupName()+"\",\"nodes\":[";
					for(int i=0;i<listv.size();i++){
						VehicleInfoBo vbo=listv.get(i);
						if(i==0&&i!=listv.size()-1){
						json1=json1+"{\"text\":\""+vbo.getVehicleLic()+"\"},";
						}
						else if(i>0&&i<listv.size()-1){
							json1=json1+"{\"text\":\""+vbo.getVehicleLic()+"\"},";
						}
						else if(i==listv.size()-1){
							json1=json1+"{\"text\":\""+vbo.getVehicleLic()+"\"}]";
						}
						
					}
					json1=json1+"}";
					
				}
			}
			else{
				json1=json1+"{\"text\":\""+vgbo.getGroupName()+"\",\"nodes\":[";
				for(int j=0;j<list.size();j++){
					if(j==0&&j!=list.size()-1){
						;
						json1=json1+toJson(list.get(j).getVGroupID())+",";
					}
					else if(j>0&&j<list.size()-1){
						
						json1=json1+toJson(list.get(j).getVGroupID())+",";
					}
					else if(j==list.size()-1){
						
						json1=json1+toJson(list.get(j).getVGroupID())+"]";
					}
					
				}
				json1=json1+"}";
			}
			
		
		return json1;
		}



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值