无法将Yaml文件解组为struct

无法将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}]