你的位置:首页 > ASP.net教程

[ASP.net教程]生成树形结构的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": []      }    ]  }]