{
try {
List<TreeNode> list = mapper.getTreeNodes(); //从数据库中获取数据,数据中的节点以ID正序排列
TreeNode root = list.get(0);//取出根节点
if(root.getUrl()!=null && !root.getUrl().equals(""))
{
root.getAttributes().append("url", root.getUrl());
}
list.remove(0);
for(TreeNode tn:list)
{
if(tn.getUrl()!=null && !tn.getUrl().equals(""))
{
tn.getAttributes().append("url", tn.getUrl());
}
if(tn.getPid()!=null){
tn.getAttributes().append("pid", tn.getPid());
}
if(tn.getBtns()!=null)
{
tn.getAttributes().append("btns", tn.getBtns());
}
if(root.getId()==tn.getPid())
{
if(root.getChildren()==null)
{
root.setChildren(new ArrayList<TreeNode>());
}
root.getChildren().add(tn);
}
else
{
if(root.getChildren().size()>0)
{
addChildren(root,tn);
}
}
}
this.outJson(root);
} catch (Exception e) {
e.printStackTrace();
}
}
//递归对list遍历,为各个节点找子节点
public static void addChildren(TreeNode root,TreeNode node)
{
//前提,root的child个数大于1
for(TreeNode tn:root.getChildren())
{
if(tn.getUrl()!=null && !tn.getUrl().equals(""))
{
tn.getAttributes().append("url", tn.getUrl());
}
if(tn.getId()!=null&&!tn.getPid().equals("")){
tn.getAttributes().append("pid", tn.getPid());
}
if(tn.getBtns()!=null&&!tn.getBtns().equals(""))
{
tn.getAttributes().append("btns", tn.getBtns());
}
if(tn.getId()==node.getPid())
{
if(tn.getChildren()==null)
{
tn.setChildren(new ArrayList<TreeNode>());
}
tn.getChildren().add(node);
}
else
{
if(tn.getChildren()!=null&&tn.getChildren().size()>0)
{
addChildren(tn,node);
}
}
}
}