package main
import (
"encoding/json"
"fmt"
)
type Node struct {
ID string `json:"id"`
ParentID string `json:"parent_id"`
Name string `json:"name"`
Children []*Node `json:"children,omitempty"`
}
func Convert(items []*Node, parentID string) []*Node {
tree := make([]*Node, 0)
for _, item := range items {
if item.ParentID == parentID {
item.Children = Convert(items, item.ID)
tree = append(tree, item)
}
}
return tree
}
func main() {
items := []*Node{
{"1", "", "1", nil},
{"2", "1", "1-2", nil},
{"3", "1", "1-3", nil},
{"4", "3", "1-3-4", nil},
{"5", "", "5", nil},
{"6", "5", "5-6", nil},
}
tree := Convert(items, "")
toJson, _ := json.MarshalIndent(tree, "", " ")
fmt.Println(string(toJson))
}
output:
[
{
"id": "1",
"parent_id": "",
"name": "1",
"children": [
{
"id": "2",
"parent_id": "1",
"name": "1-2"
},
{
"id": "3",
"parent_id": "1",
"name": "1-3",
"children": [
{
"id": "4",
"parent_id": "3",
"name": "1-3-4"
}
]
}
]
},
{
"id": "5",
"parent_id": "",
"name": "5",
"children": [
{
"id": "6",
"parent_id": "5",
"name": "5-6"
}
]
}
]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类