涛子 - 简单就是美

成单纯魁增,永继振国兴,克复宗清政,广开家必升

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  428 随笔 :: 0 文章 :: 19 评论 :: 22万 阅读
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"
      }
    ]
  }
]
posted on   北京涛子  阅读(180)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示