背景
日常开发过程中,在前端界面中时不时会需要以一个树或者级联菜单的形式展示某些数据。本文旨在通过 java 代码动态构建树形数据以满足前端界面或组件展示的需要。树形数据样例如下:
[{
id: 1,
label: '一级 1',
children: [
{
id: 4,
label: '二级 1-1',
children: [
{
id: 9,
label: '三级 1-1-1'
}
]
}
]
},
{
id: 2,
label: '一级 2',
children: [
{
id: 5,
label: '二级 2-1'
}
]
}]
具体实现
1. 元数据基类
/**
* 描述:该类依据自己的实际情况来定(可能映射于某张数据表、也可能是某个配置文件或接口)
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Config implements Serializable {
//编号
private String itemId;
//描述/名称
private String itemName;
//属性0
private String attr0;
//属性1
private String attr1;
//属性2
private String attr2;
//属性3
private String attr3;
}
2. 基础数据获取
/**
* 描述:从数据源处获取全量的树数据并分别汇总
* @return Map<String, Object>
*/
public Map<String, Object> getSourceData(){
//树数据
Map<String, Object> treeMap = new HashMap<String,