What do I want?
To get a tree in JSON format from a Map.
Data to be used:
A map (key-value pairs), having keys as parents and their respective values as children
Code: The following code uses sample data, I want to use big data later on means having more parents-children. How can I structure parent-child from a Map? Please let me know if I need any other information to parse Map data into a tree structure?
type Nodes struct {
fn string
children []*Nodes
}
func main() {
var m map[string][]string
m = make(map[string][]string)
//map of parents(key) and child(values)
m["root_node"] = []string{"1","2","3","4"}
m["1"] = []string{"5","6"}
m["2"] = []string{"7"}
m["3"] = []string{"8", "9"}
m["5"] = []string{"10"}
m["7"] = []string{"11"}
m["8"] = []string{"12","13"}
//json format: I don't know how to get root_node so expected result can be achieved
bytes, err := json.Marshal(root_node)
if err != nil {
log.Fatal(err)
}
}
My expectation:
{
"Funcname": "root_node",
"Nodes": [
{
"Funcname": "1",
"Nodes": [
{
"Funcname": "5",
"Nodes": [
{
"Funcname": "10",
"Nodes": null
}
]
},
{
"Funcname": "6",
"Nodes": null
}
]
},
{
"Funcname": "2",
"Nodes": [
{
"Funcname": "7",
"Nodes": [
{
"Funcname": "11",
"Nodes": null
}
]
}
]
},
{
"Funcname": "3",
"Nodes": [
{
"Funcname": "8",
"Nodes": [
{
"Funcname": "12",
"Nodes": null
},
{
"Funcname": "13",
"Nodes": null
}
]
},
{
"Funcname": "9",
"Nodes": null
}
]
},
{
"Funcname": "4",
"Nodes": null
}
]
}