zoukankan      html  css  js  c++  java
  • 生成树形结构的JSON字符串代码(C#)供前端Angular tree使用.

         框架是使用EF6.0.可以针对返回的值使用Newtonsoft.Json.dll(百度搜一下)来对返回的值序列化为json字符串,如果对以下值那就是使用JsonConvert.SerializeObject(functionTree),啥都不说,上实例代码

    /// <summary>
            /// init tree
            /// </summary> /// <returns></returns>
            public List<FunctionInfoMapping> LoadTree()
            {
                List<FunctionInfoMapping> listTree = InitTree();
                return listTree;
                //return JsonConvert.SerializeObject(list);
            }
            /// <summary>
            /// init tree find top menu
            /// </summary>
            /// <returns></returns>
            private  List<FunctionInfoMapping> InitTree()
            {
                RightsContext rightContext = new RightsContext();
                var treeList = (from a in db.FunctionInfoes
                               join b in db.FunctionInfoes
                               on a.ParentId equals b.FunctionId
                               select new FunctionInfoMapping
                               {
                                   ID=a.FunctionId,
                                   Title=a.FunctionName,
                                   FunctionType=a.FunctionType,
                                   ParentId=b.FunctionId,
                                   ParentName=b.FunctionName,
                                   FunctionPath=a.FunctionPath,
                                   Description=a.Description,
                                   SortId=a.SortId,
                               }).Union
                              (from a in db.FunctionInfoes
                                where a.ParentId == -1
                                select new FunctionInfoMapping
                                {
                                    ID = a.FunctionId,
                                    Title = a.FunctionName,
                                    FunctionType = a.FunctionType,
                                    ParentId = -1,
                                    ParentName = "",
                                    FunctionPath = a.FunctionPath,
                                    Description = a.Description,
                                    SortId = a.SortId,
                                });
                var newTree = treeList.Union(treeList);
                //List<FunctionInfoMapping> reeList= treeList.ToList<FunctionInfoMapping>()
                List < FunctionInfoMapping > rootNode = new List<FunctionInfoMapping>();
                foreach (var plist in newTree.Where(t => t.ParentId == -1))
                {
                    FunctionInfoMapping node = new FunctionInfoMapping();
                    node.ID = plist.ID;
                    node.Title = plist.Title;
                    node.FunctionType = plist.FunctionType;
                    node.ParentId = plist.ParentId;
                    node.ParentName = plist.ParentName;
                    node.FunctionPath = plist.FunctionPath;
                    node.Description = plist.Description;
                    node.SortId =plist.SortId;
                    node.Nodes = CreateChildTree(newTree.AsQueryable<FunctionInfoMapping>(), node);
                    rootNode.Add(node);
                }
                return rootNode;
            }
            /// <summary>
            /// recursive
            /// </summary>
            /// <param name="TreeList"></param>
            /// <param name="jt"></param>
            /// <returns></returns>
            private  List<FunctionInfoMapping> CreateChildTree(IQueryable<FunctionInfoMapping> TreeList, FunctionInfoMapping parentId)
            {
                int keyid = parentId.ID;//root id
                List<FunctionInfoMapping> nodeList = new List<FunctionInfoMapping>();
                var children = TreeList.Where(t => t.ParentId == keyid);
                foreach (var chl in children)
                {
                    FunctionInfoMapping node = new FunctionInfoMapping();
                    node.ID = chl.ID;
                    node.Title = chl.Title;
                    node.FunctionType = chl.FunctionType;
                    node.ParentId = chl.ParentId;
                    node.ParentName = chl.ParentName;
                    node.FunctionPath = chl.FunctionPath;
                    node.Description = chl.Description;
                    node.SortId = chl.SortId;
                    node.Nodes = CreateChildTree(TreeList, node);
                    nodeList.Add(node);
                }
                return nodeList;
            }

    返回的结构如下

    [
        {
            "id": 2,
            "title": "Fundamental",
            "functiontype": 1,
            "parentId": -1,
            "parentname": "",
            "functionpath": "/Html/Fundamental",
            "description": "fundamental menu link",
            "sortid": 0,
            "nodes": []
        },
        {
            "id": 3,
            "title": "Auth Manager",
            "functiontype": 1,
            "parentId": -1,
            "parentname": "",
            "functionpath": "/Html/Auth",
            "description": " auth manager link ",
            "sortid": 0,
            "nodes": [
                {
                    "id": 4,
                    "title": "Role Manager",
                    "functiontype": 2,
                    "parentId": 3,
                    "parentname": "Auth Manager",
                    "functionpath": "/Html/Auth/roles.html",
                    "description": " roles manager page ",
                    "sortid": 0,
                    "nodes": [
                        {
                            "id": 10,
                            "title": "Add Role",
                            "functiontype": 3,
                            "parentId": 4,
                            "parentname": "Role Manager",
                            "functionpath": null,
                            "description": null,
                            "sortid": 0,
                            "nodes": []
                        },
                        {
                            "id": 12,
                            "title": "Delete role",
                            "functiontype": 3,
                            "parentId": 4,
                            "parentname": "Role Manager",
                            "functionpath": null,
                            "description": null,
                            "sortid": 0,
                            "nodes": []
                        }
                    ]
                },
                {
                    "id": 5,
                    "title": "Page Manager",
                    "functiontype": 2,
                    "parentId": 3,
                    "parentname": "Auth Manager",
                    "functionpath": "/Html/Auth/pages.html",
                    "description": "pages permission manager page",
                    "sortid": 0,
                    "nodes": []
                }
            ]
        }
    ]
  • 相关阅读:
    悲剧的程序员
    【C++】关于随机函数与概率设置
    布局管理器(一)
    敏捷开发,如何搜集故事
    【Visual C++】CDC与HDC的区别以及相互转换
    IFRAME without src attribute on HTTPS in Internet Explorer
    测量某断代码执行时间-代码
    数据一致性实现技术
    ffmpeg
    Log4j的使用方法
  • 原文地址:https://www.cnblogs.com/cby-love/p/5513066.html
Copyright © 2011-2022 走看看