package main import ( "bytes" "encoding/json" "fmt" "git.wecise.com/wecise/common/lib/bbangert/toml" "log" ) func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) var str = ` name = "SNMP" [TestSnmpInput] [TestSnmpInput.oid.A] name = "A" value = ".1.3.6.1.2.1.1.3.0" [TestSnmpInput.oid.B] name = "B" value = ".1.3.6.1.2.1.1.3.1" ` buf := new(bytes.Buffer) buf.WriteString(str) type oid struct { Name string `toml:"name"` Value string `toml:"value"` } type input struct { Oid map[string]oid } type config struct { Name string TestSnmpInput *input `toml:"TestSnmpInput"` } demo := new(config) _, err := toml.DecodeReader(buf, &demo) if err != nil { log.Fatal(err) } b, err := json.MarshalIndent(demo, "", " ") if err != nil { log.Fatal(err) } fmt.Println(string(b)) }