【发布时间】:2022-01-19 20:09:38
【问题描述】:
假设我有以下 yaml 文件:
key1:
- "Value1"
- "Value2"
key2:
- "Value3"
- "Value4"
我想在 Go 中解组它。我可以让 Go 决定该方案的外观并将其打印出来。
m := make(map[interface{}]interface{})
err := yaml.Unmarshal(yaml_file, &m)
fmt.Prinf(m)
这将打印如下内容:
map[key1:[Value1 Value2] key2:[Value3 Value4]]
但是地图是无序的。顺序对我来说非常重要,我也不想松开钥匙。
我不能只创建一个结构并尝试将 yaml 文件解组为该结构的一部分...
type Element struct {
Key string
Value interface{}
}
t := []Element{}
err := yaml.Unmarshal(yaml_file, &t)
if err != nil {
log.Fatalf("error: %v", err)
}
将打印error: yaml: unmarshal errors: line 2: cannot unmarshal !!map into []Element
没有字段标签告诉 yaml 解析器用 yaml 键填充 Key 属性。
有没有比自己编写解码器不同的方法?
【问题讨论】:
标签: go yaml unmarshalling