71 lines
1.2 KiB
Go
71 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
func printYAML(node *yaml.Node) {
|
|
switch node.Kind {
|
|
case yaml.MappingNode:
|
|
fmt.Print(node.HeadComment)
|
|
fmt.Print("{")
|
|
for i := 0; i < len(node.Content)/2; i++ {
|
|
key := node.Content[i*2]
|
|
value := node.Content[i*2+1]
|
|
printYAML(key)
|
|
fmt.Print(": ")
|
|
printYAML(value)
|
|
if i < len(node.Content)/2-1 {
|
|
fmt.Print(", ")
|
|
}
|
|
}
|
|
fmt.Print("}")
|
|
fmt.Print(node.FootComment)
|
|
case yaml.SequenceNode:
|
|
fmt.Print("[")
|
|
for i, n := range node.Content {
|
|
printYAML(n)
|
|
if i < len(node.Content)-1 {
|
|
fmt.Print(", ")
|
|
}
|
|
}
|
|
fmt.Print("]")
|
|
default:
|
|
fmt.Print(node.Value)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
data := `
|
|
test:
|
|
smfSystem:
|
|
display: "SMF System"
|
|
list:
|
|
- name: "sbiIpAddr"
|
|
type: "string"
|
|
value: "172.16.5.150"
|
|
access: "read-write"
|
|
filter: ''
|
|
display: "SBI IP"
|
|
comment: ""
|
|
amf:
|
|
smfSystem:
|
|
display: "SMF System"
|
|
list:
|
|
- name: "sbiIpAddr"
|
|
type: "string"
|
|
value: "172.16.5.150"
|
|
access: "read-write"
|
|
filter: ''
|
|
display: "SBI IP"
|
|
comment: ""
|
|
`
|
|
var node yaml.Node
|
|
if err := yaml.Unmarshal([]byte(data), &node); err != nil {
|
|
panic(err)
|
|
}
|
|
printYAML(&node)
|
|
}
|