go - 解码yaml

标签 go yaml

我在尝试使用gopkg.in/yaml.v2读取此Yaml时遇到问题,错误是:
line 1: cannot unmarshal !!seq into main.Owners
读取文件:

content, _ := ioutil.ReadFile("apartments.yml")

owners := Owners{}
err := yaml.Unmarshal(content, &owners)
if err != nil {
    fmt.Printf("%s\n", err)
}

我的结构看起来像:
type Owners struct {
    Owner []struct {
        Apartment  string `yaml:"apartment"`
        PaymentIds []string `yaml:"paymentIds"`
    } `yaml:"owner"`
}

数据:
- owner:
    apartment: 002
    paymentIds:
      - KB002
- owner:
    apartment: 003
    paymentIds:
      - KB003
- owner:
    apartment: 004
    paymentIds:
      - KB004
- owner:
    apartment: 005
    paymentIds:
      - KB005

最佳答案

使用Owners的结构片而不是Owner,因为根据您的owner,每个Owners都有一个yaml节点。

type Owners []struct {
    Owner struct {
        Apartment  string `yaml:"apartment"`
        PaymentIds []string `yaml:"paymentIds"`
    } `yaml:"owner"`
}

关于go - 解码yaml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61328097/

相关文章:

json - 编码(marshal)返回我的结构的空 json

yaml - 更改 RMD 摘要的行距?

symfony2 : how to include line breaks/newlines in translations?

yaml - Linux shell 从 yml 文件中获取一个字段的值

Go 语言中的 PHP file_get_contents

http - 在 golang 服务器中面临 cors 问题

c# - Go语言中Char到Ascii int的转换

XML 到 YAML 转换

java - Java中Yaml属性绑定(bind)时出现异常

go - 使用 Gin 加载图像