让节点树在golang中转换为json?
我有一个如下所示的树,想另存为json格式吗让节点树在golang中转换为json?,json,tree,go,Json,Tree,Go,我有一个如下所示的树,想另存为json格式吗 package main import ( "fmt") type Node struct { Id string Nodes []*Node } func main() { node1 := Node{Id: "1"} node2 := Node{Id:"2"} node3 := Node{Id: "3"} node4 := Node{Id: "4"} node1.Nodes = appe
package main
import ( "fmt")
type Node struct {
Id string
Nodes []*Node
}
func main() {
node1 := Node{Id: "1"}
node2 := Node{Id:"2"}
node3 := Node{Id: "3"}
node4 := Node{Id: "4"}
node1.Nodes = append(node1.Nodes, &node2)
node2.Nodes = append(node2.Nodes, &node3)
node3.Nodes = append(node3.Nodes, &node4)
fmt.Printf("node1: %p %v \n", &node1, node1)
}
我想要的输出json是这样的,怎么做
{
Id:"1",
Nodes:[
Id:"2",
Nodes:[
Id:"3",
Nodes:[Id:"4",Nodes:[]]
],
]
}
以下代码应该执行您想要的操作:
package main
import (
"encoding/json"
"fmt"
"log"
)
type Node struct {
Id string
Nodes []*Node
}
func main() {
node1 := Node{Id: "1"}
node2 := Node{Id: "2"}
node3 := Node{Id: "3"}
node4 := Node{Id: "4"}
node1.Nodes = append(node1.Nodes, &node2)
node2.Nodes = append(node2.Nodes, &node3)
node3.Nodes = append(node3.Nodes, &node4)
fmt.Printf("node1: %p %v \n", &node1, node1)
bytes, err := json.Marshal(node1)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(bytes))
}
此代码将输出json,如下所示:
{
"Id": "1",
"Nodes": [
{
"Id": "2",
"Nodes": [
{
"Id": "3",
"Nodes": [
{
"Id": "4",
"Nodes": null
}
]
}
]
}
]
}
*请注意,如果节点字段没有节点对象的切片,则该字段将在生成的json中封送为空值。如果希望节点切片呈现为空,则必须确保它们已初始化为空切片
在操场上玩这个代码 在我看来,这不像是有效的json。也就是说,你看了吗?