实体类
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SysPermission {
private Integer id;
private Integer pid;
private List<SysPermission> children;
}
形成树形结构最关键的是id和pid,其他属性不关键,可以自行定义.
关键代码
// ...上面是获取List<SysPermission> list的代码,
Map<Integer, List<SysPermission>> perListMap =
list.stream().collect(Collectors.groupingBy(SysPermission::getPid));
list.stream().forEach(item -> item.setChildren(perListMap.get(item.getId())));
return perListMap.get(0);
数据库中的数据
运行结果
{
"code": "200",
"msg": "success",
"data": [
{
"id": 1,
"pid": 0,
"children": [
{
"id": 2,
"pid": 1,
},
{
"id": 3,
"pid": 1,
}
]
},
{
"id": 4,
"pid": 0,
"children": [
{
"id": 5,
"pid": 4,
},
{
"id": 6,
"pid": 4,
"children": [
{
"id": 7,
"pid": 6,
},
{
"id": 8,
"pid": 6,
},
{
"id": 9,
"pid": 6,
}
]
}
]
}
]
}