Unmarshal Yaml地图嵌套了列表



我正在尝试为数据结构编写yaml,既是int又是字符串列表。但是我很难获得数据结构和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%vnn", t)
}

返回

map [thing1:{[] 0}]

我如何使thick1成为字符串列表?

将您的类型更改为此

type ThingAndGroups struct {
    Groups []string `yaml:"Groups"`
    Value  int      `yaml:"Value"`
}

在https://godoc.org/gopkg.in/yaml.v2#marshal的文档中

结构字段仅在导出(具有大写字母的上字母(时被取消分组,并且使用字段名称下降为默认键,并使用字段名称删除。可以通过字段标签中的" yaml"名称来定义自定义键

另外,您可以更改YAML输入以使用value之类的小写字段,然后您无需指定自定义名称。

最新更新