将Unmarshaling YAML转换为结构体 [英] Go Unmarshaling YAML into struct

查看:998
本文介绍了将Unmarshaling YAML转换为结构体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I am trying to parse a YAML data into a string:

导入YAML数据到字符串(
fmt
log
gopkg.in/yaml.v2


类型配置结构{
foo_bar字符串
}

func FailOnError(err错误,msg字符串){
if err!= nil {
log.Fatalf(%s:%s, msg,err)
panic(fmt.Sprintf(%s:%s,msg,err))
}
}

func ParseYAMLConfig(data [ ]字节)* Config {
config:= Config {}

err:= yaml.Unmarshal(data,& config)
if err!= nil {
FailOnError(err,解组配置失败)
}

return& config
}

var configYAMLData =`
---
foo_bar:https://foo.bar
`

func main(){
config:= ParseYAMLConfig([] byte( configYAMLData))
fmt.Printf(%v,config)
}

package main import ( "fmt" "log" "gopkg.in/yaml.v2" ) type Config struct { foo_bar string } func FailOnError(err error, msg string) { if err != nil { log.Fatalf("%s: %s", msg, err) panic(fmt.Sprintf("%s: %s", msg, err)) } } func ParseYAMLConfig(data []byte) *Config { config := Config{} err := yaml.Unmarshal(data, &config) if err != nil { FailOnError(err, "Failed to unmarshal the config") } return &config } var configYAMLData = ` --- foo_bar: "https://foo.bar" ` func main() { config := ParseYAMLConfig([]byte(configYAMLData)) fmt.Printf("%v", config) }



<由于某些原因,config是一个空的struct& {}虽然。

For some reason, config is an empty struct &{} though.

推荐答案

您的struct的字段未导出。 导出他们,它会工作。

Your struct's fields are unexported. Export them and it'll work.

type Config struct {
    FooBar string `yaml:"foo_bar"`
}

这篇关于将Unmarshaling YAML转换为结构体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆