用List构建带有层次结构的json数据

来源:互联网 发布:linux 启动文件丢失 编辑:程序博客网 时间:2024/05/22 13:41

    在我的上一篇文章中讲述了如何以Oracle数据表和递归子查询构建多叉树以及如何查询(地址为 http://blog.csdn.net/hellowordapi/article/details/75763432), 但是在我们查询出来后要把逻辑上抽象的树转换成带有层级数据的json结构,这样才能够在前端插件如Ztree或自己写的左侧栏中渲染完成业务需求。 下面是把数据库中的数据转成带有层次结构的代码。

  需要引入的jar包maven地址为(也可以不引用只是博主喜欢了用Guava):

        <dependency>            <groupId>com.google.guava</groupId>            <artifactId>guava</artifactId>            <version>18.0</version>        </dependency>
如果不引入瓜娃,只需要把Lists.newArrayList(); 改为jdk实例化List的方式即可。


实体类:

import com.google.common.collect.Lists;import net.sf.json.JSONObject;/** *   * @author zhoujie * */public class SidebarTree {      private String url;      private String urlname;      private String id;  //节点      private String parent; //父节点      private JSONObject attributes = new JSONObject();   //net.sf.json      private List<SidebarTree> children= Lists.newArrayList(); //存放子节点     //get set }


核心类:

public class TreeTest {public static List<SidebarTree> formatTree(List<SidebarTree> list ){SidebarTree root=new SidebarTree();SidebarTree node=new SidebarTree();List<SidebarTree> treelist=Lists.newArrayList(); //拼凑好的Json数据List<SidebarTree> parentNodes=Lists.newArrayList(); // 存放所有父节点     if(list!=null && list.size()>0){             root=list.get(0); //第一个一定是根节点 0                        for(int i=1; i<list.size(); i++){           node=list.get(i);           if(node.getParent().equals(root.getId())){ //从跟节点开始遍历是不是子节点            parentNodes.add(node);           root.getChildren().add(node);                      }else{ //获取root子节点的孩子节点            getChildrenNodes(parentNodes, node);              parentNodes.add(node);           }           }       }     treelist.add(root);     return treelist;          }private static void getChildrenNodes(List<SidebarTree> parentNodes , SidebarTree node){ for(int i=parentNodes.size()-1; i>=0; i--){  SidebarTree pnode=parentNodes.get(i);    if(pnode.getId().equals(node.getParent())){  pnode.getChildren().add(node);  return;  }  }}}


最终json格式:

[    {        "url": "*",        "urlname": "系统管理",        "id": "1",        "parent": "0",        "attributes": {},        "children": [            {                "url": "*",                "urlname": "权限管理",                "id": "2",                "parent": "1",                "attributes": {},                "children": [                    {                        "url": "/permission/index",                        "urlname": "权限列表",                        "id": "4",                        "parent": "2",                        "attributes": {},                        "children": []                    },                    {                        "url": "/permission/addPermission.shtml",                        "urlname": "权限添加",                        "id": "6",                        "parent": "2",                        "attributes": {},                        "children": []                    },                    {                        "url": "/permission/deletePermissionById",                        "urlname": "权限删除",                        "id": "7",                        "parent": "2",                        "attributes": {},                        "children": []                    },                    {                        "url": "/permission/addPermission2Role",                        "urlname": "权限分配",                        "id": "13",                        "parent": "2",                        "attributes": {},                        "children": []                    },                    {                        "url": "/permission/allocation",                        "urlname": "权限分配2",                        "id": "19",                        "parent": "2",                        "attributes": {},                        "children": []                    }                ]            },            {                "url": "*",                "urlname": "用户管理",                "id": "22",                "parent": "1",                "attributes": {},                "children": [                    {                        "url": "/member/list.shtml",                        "urlname": "用户列表",                        "id": "8",                        "parent": "22",                        "attributes": {},                        "children": []                    },                    {                        "url": "/member/online.shtml",                        "urlname": "在线用户",                        "id": "9",                        "parent": "22",                        "attributes": {},                        "children": []                    },                    {                        "url": "/member/changeSessionStatus",                        "urlname": "用户Session踢出",                        "id": "10",                        "parent": "22",                        "attributes": {},                        "children": []                    },                    {                        "url": "/member/forbidUserById",                        "urlname": "用户激活or禁止",                        "id": "11",                        "parent": "22",                        "attributes": {},                        "children": []                    },                    {                        "url": "/member/deleteUserById",                        "urlname": "用户删除",                        "id": "12",                        "parent": "22",                        "attributes": {},                        "children": []                    }                ]            },            {                "url": "*",                "urlname": "角色管理",                "id": "23",                "parent": "1",                "attributes": {},                "children": [                    {                        "url": "/role/clearRoleByUserIds",                        "urlname": "用户角色分配清空",                        "id": "14",                        "parent": "23",                        "attributes": {},                        "children": []                    },                    {                        "url": "/role/addRole2User",                        "urlname": "角色分配保存",                        "id": "15",                        "parent": "23",                        "attributes": {},                        "children": []                    },                    {                        "url": "/role/deleteRoleById.shtml",                        "urlname": "角色列表删除",                        "id": "16",                        "parent": "23",                        "attributes": {},                        "children": []                    },                    {                        "url": "/role/addRole",                        "urlname": "角色列表添加",                        "id": "17",                        "parent": "23",                        "attributes": {},                        "children": []                    },                    {                        "url": "role/index",                        "urlname": "角色列表",                        "id": "18",                        "parent": "23",                        "attributes": {},                        "children": []                    },                    {                        "url": "/role/allocation",                        "urlname": "角色分配",                        "id": "20",                        "parent": "23",                        "attributes": {},                        "children": []                    }                ]            }        ]    }]




原创粉丝点击