import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.cloudwise.itsm.custom.bean.AccountPermissionAutomationData;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class TreeUtils {
//把一个List转成树
public static List<AccountPermissionAutomationData> buildTree(List<AccountPermissionAutomationData> list, String pid) {
List<AccountPermissionAutomationData> tree = new ArrayList<>();
for (AccountPermissionAutomationData node : list) {
if (Objects.equals(node.getParentId(), pid)) {
tree.add(findChild(node, list));
}
}
return tree;
}
public static AccountPermissionAutomationData findChild(AccountPermissionAutomationData node, List<AccountPermissionAutomationData> list) {
for (AccountPermissionAutomationData n : list) {
if (Objects.equals(n.getParentId(), node.getId())) {
if (node.getChildren() == null) {
node.setChildren(new ArrayList<AccountPermissionAutomationData>());
}
node.getChildren().add(findChild(n, list));
}
}
return node;
}
public static void main(String[] args) {
String json = "[{\"id\":\"202202221543311496027860857753600\",\"code\":\"1\",\"name\":\"1\",\"appId\":\"20211222175954273-B122-BAF3A3946\",\"disabled\":\"false\",\"parentId\":\"null\",\"extendAttrs\":\"[]\"},{\"id\":\"202201141832081481937165800394752\",\"code\":\"2\",\"name\":\"2\",\"appId\":\"20211222175954273-B122-BAF3A3946\",\"disabled\":\"false\",\"parentId\":\"null\",\"extendAttrs\":\"[]\"},{\"id\":\"202201141830301481936758314778624\",\"code\":\"2-1\",\"name\":\"2-1\",\"appId\":\"20211222175954273-B122-BAF3A3946\",\"disabled\":\"false\",\"parentId\":\"202201141832081481937165800394752\",\"extendAttrs\":\"[]\"},{\"id\":\"202201141829081481936410850385920\",\"code\":\"2-2\",\"name\":\"2-2\",\"appId\":\"20211222175954273-B122-BAF3A3946\",\"disabled\":\"false\",\"parentId\":\"202201141832081481937165800394752\",\"extendAttrs\":\"[]\"},{\"id\":\"202201141827551481936107093262336\",\"code\":\"2-1-1\",\"name\":\"2-1-1\",\"appId\":\"20211222175954273-B122-BAF3A3946\",\"disabled\":\"false\",\"parentId\":\"202201141830301481936758314778624\",\"extendAttrs\":\"[]\"},{\"id\":\"202201141827551481936107093262336\",\"code\":\"2-1-2\",\"name\":\"2-1-2\",\"appId\":\"20211222175954273-B122-BAF3A3946\",\"disabled\":\"false\",\"parentId\":\"202201141830301481936758314778624\",\"extendAttrs\":\"[]\"},{\"id\":\"202201141827461481936067401998336\",\"code\":\"2-2-1\",\"name\":\"2-2-1\",\"appId\":\"20211222175954273-B122-BAF3A3946\",\"disabled\":\"false\",\"parentId\":\"202201141829081481936410850385920\",\"extendAttrs\":\"[]\"},{\"id\":\"202201141629171481906251604762624\",\"code\":\"3\",\"name\":\"3\",\"appId\":\"20211222175954273-B122-BAF3A3946\",\"disabled\":\"false\",\"parentId\":\"null\",\"extendAttrs\":\"[]\"},{\"id\":\"202201141624581481905166198607872\",\"code\":\"3-1\",\"name\":\"3-1\",\"appId\":\"20211222175954273-B122-BAF3A3946\",\"disabled\":\"false\",\"parentId\":\"202201141629171481906251604762624\",\"extendAttrs\":\"[]\"}]";
List<AccountPermissionAutomationData> list = JSONUtil.parseArray(json).toList(AccountPermissionAutomationData.class);
List<AccountPermissionAutomationData> nodes = buildTree(list, "null");
System.out.println(JSON.toJSONString(nodes));
}
}
原json结构:
[{
"id": "202202221543311496027860857753600",
"code": "1",
"name": "1",
"appId": "20211222175954273-B122-BAF3A3946",
"disabled": "false",
"parentId": "null",
"extendAttrs": "[]"
}, {
"id": "202201141832081481937165800394752",
"code": "2",
"name": "2",
"appId": "20211222175954273-B122-BAF3A3946",
"disabled": "false",
"parentId": "null",
"extendAttrs": "[]"
}, {
"id": "202201141830301481936758314778624",
"code": "2-1",
"name": "2-1",
"appId": "20211222175954273-B122-BAF3A3946",
"disabled": "false",
"parentId": "202201141832081481937165800394752",
"extendAttrs": "[]"
}, {
"id": "202201141829081481936410850385920",
"code": "2-2",
"name": "2-2",
"appId": "20211222175954273-B122-BAF3A3946",
"disabled": "false",
"parentId": "202201141832081481937165800394752",
"extendAttrs": "[]"
}, {
"id": "202201141827551481936107093262336",
"code": "2-1-1",
"name": "2-1-1",
"appId": "20211222175954273-B122-BAF3A3946",
"disabled": "false",
"parentId": "202201141830301481936758314778624",
"extendAttrs": "[]"
}, {
"id": "202201141827551481936107093262336",
"code": "2-1-2",
"name": "2-1-2",
"appId": "20211222175954273-B122-BAF3A3946",
"disabled": "false",
"parentId": "202201141830301481936758314778624",
"extendAttrs": "[]"
}, {
"id": "202201141827461481936067401998336",
"code": "2-2-1",
"name": "2-2-1",
"appId": "20211222175954273-B122-BAF3A3946",
"disabled": "false",
"parentId": "202201141829081481936410850385920",
"extendAttrs": "[]"
}, {
"id": "202201141629171481906251604762624",
"code": "3",
"name": "3",
"appId": "20211222175954273-B122-BAF3A3946",
"disabled": "false",
"parentId": "null",
"extendAttrs": "[]"
}, {
"id": "202201141624581481905166198607872",
"code": "3-1",
"name": "3-1",
"appId": "20211222175954273-B122-BAF3A3946",
"disabled": "false",
"parentId": "202201141629171481906251604762624",
"extendAttrs": "[]"
}]
运行代码输出格式:
[{
"appId": "20211222175954273-B122-BAF3A3946",
"code": "1",
"disabled": "false",
"extendAttrs": "[]",
"id": "202202221543311496027860857753600",
"name": "1",
"parentId": "null"
}, {
"appId": "20211222175954273-B122-BAF3A3946",
"children": [{
"appId": "20211222175954273-B122-BAF3A3946",
"children": [{
"appId": "20211222175954273-B122-BAF3A3946",
"code": "2-1-1",
"disabled": "false",
"extendAttrs": "[]",
"id": "202201141827551481936107093262336",
"name": "2-1-1",
"parentId": "202201141830301481936758314778624"
}, {
"appId": "20211222175954273-B122-BAF3A3946",
"code": "2-1-2",
"disabled": "false",
"extendAttrs": "[]",
"id": "202201141827551481936107093262336",
"name": "2-1-2",
"parentId": "202201141830301481936758314778624"
}],
"code": "2-1",
"disabled": "false",
"extendAttrs": "[]",
"id": "202201141830301481936758314778624",
"name": "2-1",
"parentId": "202201141832081481937165800394752"
}, {
"appId": "20211222175954273-B122-BAF3A3946",
"children": [{
"appId": "20211222175954273-B122-BAF3A3946",
"code": "2-2-1",
"disabled": "false",
"extendAttrs": "[]",
"id": "202201141827461481936067401998336",
"name": "2-2-1",
"parentId": "202201141829081481936410850385920"
}],
"code": "2-2",
"disabled": "false",
"extendAttrs": "[]",
"id": "202201141829081481936410850385920",
"name": "2-2",
"parentId": "202201141832081481937165800394752"
}],
"code": "2",
"disabled": "false",
"extendAttrs": "[]",
"id": "202201141832081481937165800394752",
"name": "2",
"parentId": "null"
}, {
"appId": "20211222175954273-B122-BAF3A3946",
"children": [{
"appId": "20211222175954273-B122-BAF3A3946",
"code": "3-1",
"disabled": "false",
"extendAttrs": "[]",
"id": "202201141624581481905166198607872",
"name": "3-1",
"parentId": "202201141629171481906251604762624"
}],
"code": "3",
"disabled": "false",
"extendAttrs": "[]",
"id": "202201141629171481906251604762624",
"name": "3",
"parentId": "null"
}]