在我们开发中,前端有些树形组件需要的数据类型更多是树形类型:
[
{
"id": "1",
"label": "it部",
"pid": "0",
"children": [
{
"id": "3",
"label": "架构组",
"pid": "1",
"children": []
},
{
"id": "4",
"label": "oa组",
"pid": "1",
"children": []
}
]
},
{
"id": "2",
"label": "人事部",
"pid": "0",
"children": [
{
"id": "5",
"label": "hr",
"pid": "2",
"children": []
}
]
}
]
为了将计算放在后端,而不将复杂的计算放置在前端上,我们后端就要对返回的普通list进行处理。
我们需要以下步骤:
(1)先创建TreeDto类
@Data @AllArgsConstructor public class TreeDto { private String id; private String label;//名称 private String pid;//级别 private List<TreeDto> children; }
代码部分:结果如上所示
@RestController public class treeController { @RequestMapping("/tree") public List<TreeDto> treeTest() { ArrayList<TreeDto> list = new ArrayList<>(); list.add(new TreeDto("1", "it部", "0", null)); list.add(new TreeDto("2", "人事部", "0", null)); list.add(new TreeDto("3", "架构组", "1", null)); list.add(new TreeDto("4", "oa组", "1", null)); list.add(new TreeDto("5", "hr", "2", null)); return transformData(list, "0"); } public List<TreeDto> transformData(List<TreeDto> treeNodeList, String pid) { List<TreeDto> list = new LinkedList<TreeDto>(); for (TreeDto node : treeNodeList) { if (node.getPid().equals(pid)) { node.setChildren(transformData(treeNodeList, node.getId())); list.add(node); } } System.out.println(list); return list; }