数据库层级关系转换为树结构的json
首先是数据库设计:
自己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
如下图
数据准备完成,接下来开始进行树结构转换
因为每一个节点现在都是以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的,可是我前几天看的稀里糊涂的,把自己坑的不要不要的,然后不断的踩坑,不断的推翻重写
推荐阅读