yaml文件中的初始键是任意的,如何在Go中读取它们?

时间:2018-12-17 13:16:08

标签: go

我有以下yaml文件

arbitratyKey:
    things:
       - value 1
       - value 2

canBeAnything:
    things:
       - value 1
       - value 2

asdasdasd:
    things:
       - value 1
       - value 2

当我不知道根密钥是什么时,如何选择密钥?

我正在使用以下库 https://godoc.org/gopkg.in/yaml.v2#Unmarshal

以下代码显然不起作用,但是如何在不指定类型的情况下访问canBeAnything键?

type T struct{}

t := T{}
yaml.Unmarshal([]byte(data), &t)
fmt.Println(t.canBeAnything)

1 个答案:

答案 0 :(得分:2)

在通常情况下,如果您要解析某个文件,则在解析之前会知道它的外观。因此,如果您知道文件的外观,请考虑Unmarshal到定义文件形状的结构实例。

如果您不了解架构,需要动态工作,请Unmarshal进入map[string]interface{}

t := make(map[string]interface{})
yaml.Unmarshal([]byte(data), &t)
fmt.Println(t["canBeAnything"])