ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

golang 无限极树的结构化返回

2022-05-09 16:35:31  阅读:284  来源: 互联网

标签:结构化 json list treeMap golang 无限极 treeItem ParentId FileId


从一篇博客上学习到的方式。作用于树状数据处理返回,很巧妙,学习到了,记录下来。

实现思路

  1.获取所有数据list
  2.遍历所有数据list,转换为map。以唯一ID为key
  3.遍历所有数据list,(这里继续用list,是为了保证按照顺序输出)
  4.遍历中,取所有的父级ID。定义为一级子集。
  5.遍历中,如果存在父级ID。追加到父级的子集中。

代码示例

  

---------处理代码------------- 
       list,total := 查询的全部数据
	treeMap := make(map[string]*treeItem, total)
	for _, v := range list {
		treeMap[v.FileId] = &treeItem{
			FileId:   v.FileId,
			FileName: v.FileName,
			ParentId: v.ParentId,
			Children: []*treeItem{},
		}
	}

	treeData := make([]*treeItem, 0, total) //全部的树状数据
	for _, v := range list {
		if v.ParentId == "" || v.ParentId == "0" {
			treeData = append(treeData, treeMap[v.FileId])
			continue
		}
		if vv, ok := treeMap[v.ParentId]; ok {
			vv.Children = append(vv.Children, treeMap[v.FileId])
		}
	}

---------处理代码------------- 

type treeItem struct {
	FileId   string      `json:"file_id"`
	FileName string      `json:"file_name"`
	ParentId string      `json:"parent_id"`
	Children []*treeItem `json:"children"`
}

  

treeData就是处理后的数据,仅供参考

标签:结构化,json,list,treeMap,golang,无限极,treeItem,ParentId,FileId
来源: https://www.cnblogs.com/already/p/16249637.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有