涛子 - 简单就是美

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

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
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 2022-04-24 10:13  北京涛子  阅读(156)  评论(0编辑  收藏  举报