登录
首页 >  Golang >  Go问答

当文件以 - 开头时进行 Yaml 解析

来源:stackoverflow

时间:2024-04-13 10:27:34 464浏览 收藏

从现在开始,努力学习吧!本文《当文件以 - 开头时进行 Yaml 解析》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我正在尝试使用“gopkg.in/yaml.v3”包将 yaml 文件解析为 go。 我无法解决的问题是解析以 - 开头的文件。例如:

---
- type: people
  info:
   - { name: john, last: doe }
   ...

所以当我尝试解析这个时

package main

import (
  "fmt"
  "io/ioutil"
  "log"
  
  "gopkg.in/yaml.v3"
)

type yamlfile struct {
  type string `yaml:"type"`
}

func main() {
        d := yamlfile{}

        src, err := ioutil.readfile("test1.yaml")
        if err != nil {
                log.println(err)
        }

        err = yaml.unmarshal(src, &d)
        if err != nil {
                log.printf("error: %v", err)
        }

        fmt.println(d)
}

输出:错误:yaml:解组错误:第2行:无法将!!seq解组到main.yamlfile

当从文件中删除 - 时,上述代码有效

---
type: people
info:
   - { name: John, last: Doe }
...

但是我无法重新格式化该文件,因此我需要知道尝试使用 - 进行解析时做错了什么。感谢您提供正确方向的指示。


正确答案


- 表示它是一个列表/数组。因此,您必须在 go 中解组为切片或数组。

d := yamlfile{} 更改为 d := []yamlfile{},您将不再收到该错误。

但还要注意,您定义的结构总是会得到空结果,因为它没有导出字段。

尝试一下:

type YamlFile struct {
  Type string `yaml:"type"`
}

See it on the playground

以上就是《当文件以 - 开头时进行 Yaml 解析》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>