欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库层级关系转换为树结构的json

程序员文章站 2024-03-22 23:43:28
...

首先是数据库设计:

 

自己id           自己名字              父节点id

cid                 cname                  pid

1001              手机                     null

2001              华为                     1001

2002              苹果                     1001

2003              三星                     1001

3001              华为P10               2001

3002              华为荣耀9            2001

4001              黑色                     3001

4002              白色                     3001

 

通过查询数据库,将全局数据作为一个ArrayList<HashMap<String,Object>>获取

每单个节点都是一个HashMap,如

”cid”:2001,”cname”:华为,”pid”:1001

如下图

数据库层级关系转换为树结构的json

数据准备完成,接下来开始进行树结构转换

因为每一个节点现在都是以HashMap的格式来存储的,所以可以在HashMap里面添加一个key,用来存储子节点的信息,也就是baby,然后将拥有本节点cid为父节点pid的节点信息存入此节点的key为baby的ArrayList<HashMap<String,Object>>里面,同时加入递归,一层一层查下去,由此可以生成一个树结构的数据,然后使用json转换工具,就可以直接返回给浏览器


递归代码:

public List TreeGood(ArrayList<HashMap<String, Object>> notes, String cid) throws SQLException {
		ArrayList<HashMap<String, Object>> treeGoods = new ArrayList<HashMap<String, Object>>();
		for (HashMap<String, Object> good : notes) {
			System.out.println(cid);
			String pid = good.get("pid") == null ? "" : good.get("pid") + "";
			if (cid.equals(pid)) {
				HashMap<String, Object> map = new HashMap<String, Object>();
				String ccid = (String) good.get("cid");
				map = good;
				map.put("baby", TreeGood(notes, ccid));
				treeGoods.add(map);
			}
		}
		return treeGoods;
}



ps:网上有很多讲怎么把层级关系转换为json的,可是我前几天看的稀里糊涂的,把自己坑的不要不要的,然后不断的踩坑,不断的推翻重写


数据库层级关系转换为树结构的json