Unmarshal YAML映射与列表嵌套
问题描述:
我正在尝试为既是int又是字符串列表的数据结构编写YAML。但是我无法获得数据结构和YAML字符串匹配。例如Unmarshal YAML映射与列表嵌套
package main
import (
"fmt"
"log"
yaml "gopkg.in/yaml.v2"
)
type ThingAndGroups struct {
Groups []string
Value int
}
var someStr = `
thing1:
Groups:
- g1
- g2
Value:
5
`
func main() {
t := make(map[string]ThingAndGroups)
err := yaml.Unmarshal([]byte(someStr), &t)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("--- t:\n%v\n\n", t)
}
返回
地图[thing1:{[] 0}]
我怎么thing1是一个字符串列表?
答
改变你的类型与本
type ThingAndGroups struct {
Groups []string `yaml:"Groups"`
Value int `yaml:"Value"`
}
在DOC为https://godoc.org/gopkg.in/yaml.v2#Marshal它说
结构域只解组,如果他们出口(有一个大写首字母),并解组使用lowercased作为默认键的字段名称。自定义键可通过“YAML”的名字在外地标签来定义
或者你可以改变你的YAML输入使用像value
小写领域,那么你就不需要指定自定义名称。