无法将Yaml文件解组为struct

时间:2019-08-26 21:17:35

标签: go yaml

我正在尝试将数据编组为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
}

这是我的代码的一部分,我正在使用gopkg.in/yaml.v2软件包

yamlFile, err := ioutil.ReadAll(r)
    if err != nil {
        return err
    }
    var data models.DataFromYAML

    err2 := yaml.Unmarshal(yamlFile, data)


我收到错误消息:无法将!! seq解组到模型中。DataCollectionFromYAML

1 个答案:

答案 0 :(得分:1)

models.DataFromYAML插入的

使用[]models.DataFromYAML的数组     包主

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\n", err)
        return
    }

    fmt.Println(test)
}

输出:

[{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}]