David Alsh
David Alsh

Reputation: 7649

Initial keys in yaml file are arbitrary, how do I read them in Go?

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

Answers (1)

Seaskyways
Seaskyways

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 Unmarshaling 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

Related Questions