簡體   English   中英

Golang 將 URL 切片轉換為 JSON 站點樹

[英]Golang Convert Slice of URLs To JSON Site Tree

我有一個 url 列表,需要將其更改為 JSON 樹結構。 到目前為止,我已經嘗試了幾種不同的方法,但都失敗了。 目前我正在嘗試將此算法轉換為 Golang,但它沒有做任何事情我被他們的邏輯困住了,我對 golang 的轉換有缺陷,我被卡住了。

樹.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
}

我也完全接受任何其他解決方案,我對這個算法沒有任何附件。 只是很難弄清楚如何將它們構建成一棵樹。

在這里找到了一個可行的解決方案: Get a tree like structure out of path string

實現起來真的就是這么簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM