[英]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.