【问题标题】:Golang Convert Slice of URLs To JSON Site TreeGolang 将 URL 切片转换为 JSON 站点树
【发布时间】:2020-03-09 09:58:34
【问题描述】:

我有一个需要更改为 JSON 树结构的 url 列表。到目前为止,我已经尝试了几种不同的方法,但都失败了。目前我正在尝试将this algorithm 转换为 Golang,但它没有做任何事情我被他们的逻辑困住了,我对 golang 的转换有缺陷并且我被困住了。

tree.go

package tree

import (
    "fmt"
)

type TreeNode struct {
    Path     string     `json:"path"`
    Children []TreeNode `json:"children"`
}

urls := []string{
"fenceprosc.com/hello-world/#respond",
"fenceprosc.com/199-2/12615753_1208442715850011_4650003168465028857_o/#respond",
"fenceprosc.com/199-2/28339_127294957298131_7361568_n/#main",
"fenceprosc.com/199-2/10917425_1025362007491417_2370903639534256456_n/#main",
"fenceprosc.com/199-2/vinyl-gate-2/#main",
"fenceprosc.com/199-2/vinyl-gate1/#main",
}

func GetTheParentNodeChildArray(path string, treeNodes *[]TreeNode) []TreeNode {
    for _, treeNode := range *treeNodes {
        if len(treeNode.Children) > 0 {
            var possibleParent = false

            for _, node := range treeNode.Children {
                // What do I do here???
                fmt.Println("node::", node)
            }

            if possibleParent {
                return GetTheParentNodeChildArray(path, &treeNode.Children)
            }
        }
    }

    return *treeNodes
}

// Add an item node in the tree, at the right position
func addToTree(node TreeNode, treeNodes *[]TreeNode) {
    parentNodeArr := GetTheParentNodeChildArray(node.Path, treeNodes)
    fmt.Println("parentNodeArr", parentNodeArr)
    if parentNodeArr == nil {
        parentNodeArr = *treeNodes
    }

    parentNodeArr = append(parentNodeArr, TreeNode{
        Path: node.Path,
    })
}

//Create the item tree starting from urls
func createTree(nodes []TreeNode) []TreeNode {
    var tree []TreeNode
    for _, node := range nodes {
        addToTree(node, &tree)
    }

    return tree
}

func BuildTree(urls []string) []string {
    //tree := &TreeNode{
    //  Path:     "/",
    //  Children: []TreeNode{},
    //}

    var data []TreeNode
    for _, u := range urls {
        node := TreeNode{
            Path: u,
        }

        data = append(data, node)
    }

    tree := createTree(data)
    fmt.Println("tree::", tree)
    return urls
}

我也对任何其他解决方案完全开放,我对这个算法没有任何附件。只是很难弄清楚如何将这些构建成一棵树。

【问题讨论】:

标签: json go tree


【解决方案1】:

在这里找到一个可行的解决方案:Get a tree like structure out of path string

实现起来就这么简单。

【讨论】:

    猜你喜欢
    • 2021-08-18
    • 2016-11-29
    • 2018-01-04
    • 2017-03-26
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2021-10-29
    相关资源
    最近更新 更多