dongyi4420 2019-08-26 21:17
浏览 300
已采纳

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

  • 写回答

1条回答 默认 最新

  • doukun8670 2019-08-27 04:08
    关注

    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}]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵