Reputation: 7649
I have the following yaml file
arbitratyKey:
things:
- value 1
- value 2
canBeAnything:
things:
- value 1
- value 2
asdasdasd:
things:
- value 1
- value 2
How do I select a key on this when I am unable to know what the root key will be?
I am using the following library https://godoc.org/gopkg.in/yaml.v2#Unmarshal
Obviously the following code doesn't work, but how do I access the canBeAnything
key without specifying a type before?
type T struct{}
t := T{}
yaml.Unmarshal([]byte(data), &t)
fmt.Println(t.canBeAnything)
Upvotes: 1
Views: 915
Reputation: 3795
In the normal cases, if you are parsing a certain file you would know how it looks ahead of parsing it. So if you know how the file looks, then consider Unmarshal
ing to an instance of a struct that defines the shape of the file.
If you don't know the schema and need to work dynamically, Unmarshal
into map[string]interface{}
t := make(map[string]interface{})
yaml.Unmarshal([]byte(data), &t)
fmt.Println(t["canBeAnything"])
Upvotes: 3