无法将Yaml文件解组为struct
问题描述:
I am trying to UnmarshalS into DataCollectionFromYAML
---
-
labels: cats, cute, funny
name: "funny cats"
url: "http://glorf.com/videos/asfds.com"
-
labels: cats, ugly,funny
name: "more cats"
url: "http://glorf.com/videos/asdfds.com"
-
labels: dogs, cute, funny
name: "lots of dogs"
url: "http://glorf.com/videos/asasddfds.com"
-
name: "bird dance"
url: "http://glorf.com/videos/q34343.com"
type DataFromYAML struct {
Labels string `yaml:"labels"`
Name string `yaml:"name"`
URL string `yaml:"url"`
}
type DataCollectionFromYAML struct {
data []VidedFromYAML
}
Here is part of my code and I am using gopkg.in/yaml.v2 package
yamlFile, err := ioutil.ReadAll(r)
if err != nil {
return err
}
var data models.DataFromYAML
err2 := yaml.Unmarshal(yamlFile, data)
I am getting the error message: cannot unmarshal !!seq into models.DataCollectionFromYAML
我正在尝试将数据解编为DataCollectionFromYAML p>
---
-
标签:可爱,有趣的猫
名称:“有趣的猫”
网址:“ http://glorf.com/videos/asfds.com”
-
标签:猫,丑陋, 有趣的
名称:“更多的猫”
网址:“ http://glorf.com/videos/asdfds.com”
-
标签:可爱的狗
名称:“很多狗” \ n网址:“ http://glorf.com/videos/asasddfds.com”
-
名称:“鸟舞”
网址:“ http://glorf.com/videos/q34343.com”
code> pre>
type DataFromYAML结构{
标签字符串`yaml:“ labels”`
名称字符串`yaml:“ name”`
URL字符串 yaml:“ url”
}
type DataCollectionFromYAML结构{
data [] VidedFromYAML
}
code> pre>
这是我的代码的一部分, 我正在使用gopkg.in/yaml.v2包 p>
yamlFile,err:= ioutil.ReadAll(r)
如果err!= nil {
返回err
}
var数据模型。DataFromYAML
err2:= yaml.Unmarshal(yamlFile,data)
\ n code> pre>
我收到错误消息:无法将!! seq编组到模型中。DataCollectionFromYAML p>
div>
答
insted of models.DataFromYAML
use array of []models.DataFromYAML
package main
import (
"fmt"
"github.com/ghodss/yaml"
)
const data = `---
-
labels: cats, cute, funny
name: "funny cats"
url: "http://glorf.com/videos/asfds.com"
-
labels: cats, ugly,funny
name: "more cats"
url: "http://glorf.com/videos/asdfds.com"
-
labels: dogs, cute, funny
name: "lots of dogs"
url: "http://glorf.com/videos/asasddfds.com"
-
name: "bird dance"
url: "http://glorf.com/videos/q34343.com"
`
type DataFromYAML struct {
Labels string `yaml:"labels"`
Name string `yaml:"name"`
URL string `yaml:"url"`
}
func main() {
var test []DataFromYAML
err := yaml.Unmarshal([]byte(data), &test)
if err != nil {
fmt.Printf("err: %v
", err)
return
}
fmt.Println(test)
}
Output:
[{cats, cute, funny funny cats http://glorf.com/videos/asfds.com} {cats, ugly,funny more cats http://glorf.com/videos/asdfds.com} {dogs, cute, funny lots of dogs http://glorf.com/videos/asasddfds.com} { bird dance http://glorf.com/videos/q34343.com}]