最近项目里遇到需要combotree的地方,需要把数据一次性加载完毕,所以要构造每个节点里带children属性的JSON数据,而不能选择懒加载的方式,每次点击展开图标时才加载本节点所属子节点数据。所以本文先介绍整体数据转换成combotree所需格式的方式,最后再介绍懒加载方式的实现。
我们需要的数据格式举例如下:[{
"id":"id1",
"text":"text1",
"state":"closed",
"children":[{
"id":"id11",
"text":"text11"
}]
}]
但是我的数据是数据库查询出来的一条条的并列数据,需要自己组装。开始百度了半天发现不是手动给你写出个这个格式的JSON串的,就是一堆代码运行出来,结果数据还不对。最后只能自己写,思路可能跟网上大神很不同,但是也算完美解决了问题,记录如下:
具体思路就是,把原始数据按数据层级(level,就是最后要形成的树结构里的层级,我的数据是用 start with -- connect by -- prior 查出来的,所以天然可以查到level这个属性)先分组,有几个层级,就分成几组,每组数据组成一个list,然后从层级最大的那个list开始,一级级循环着把数据分别挂接到他的上层节点作为children,最后就形成了我们需要的数据结构