假如数据库表结构是 id,pid这种表结构类型
@Test
public void testJsonTree(){
List<Map> selectAll = buildData();
Map linkMap=new LinkedHashMap<>();
List linkList=new LinkedList<>();
for (Map entity : selectAll) {
Integer id=(Integer) entity.get("id");
linkMap.put(id, entity);
}
int size=selectAll.size();
for (int i=0;i<size;i++) {
Map entity=selectAll.get(i);
Integer pid = (Integer) entity.get("pid");
Map parentMap = (Map) linkMap.get(pid);
if(parentMap!=null){
List childList = (List) parentMap.get("child");
if(childList!=null){
childList.add(entity);
}else{
ArrayList<Object> arrayList = new ArrayList<>();
arrayList.add(entity);
parentMap.put("child", arrayList);
}
}else{
linkList.add(entity);
}
}
System.out.println(JSON.toJSONString(linkList));
}
private List<Map> buildData() {
List linkList=new LinkedList<>();
Map data1=new LinkedHashMap<>();
data1.put("id", 1);
data1.put("pid", 0);
data1.put("name", "t1");
linkList.add(data1);
data1=new LinkedHashMap<>();
data1.put("id", 2);
data1.put("pid", 0);
data1.put("name", "t2");
linkList.add(data1);
data1=new LinkedHashMap<>();
data1.put("id", 3);
data1.put("pid", 1);
data1.put("name", "t11");
linkList.add(data1);
data1=new LinkedHashMap<>();
data1.put("id", 4);
data1.put("pid", 3);
data1.put("name", "t111");
linkList.add(data1);
return linkList;
}
输出结果
[{"id":1,"pid":0,"name":"t1","child":[{"id":3,"pid":1,"name":"t11","child":[{"id":4,"pid":3,"name":"t111"}]}]},{"id":2,"pid":0,"name":"t2"}]
格式化: