为了账号安全,请及时绑定邮箱和手机立即绑定

解析带有“---”的yaml文件

解析带有“---”的yaml文件

Go
吃鸡游戏 2022-10-31 17:25:13
我正在使用https://github.com/go-yaml/yaml来解析 yaml 文件:type TestConfig struct {   Test string `yaml:"test"`}yaml 文件:test: 123---test: 456但是 yaml.Unmarshal() 只解析第一段,我该如何解析剩下的部分呢?
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

但是 yaml.Unmarshal() 只解析第一段,我该如何解析剩下的部分呢?

yaml.Unmarshal的医生说(强调我的):

Unmarshal 解码在 in 字节切片中找到的第一个文档,并将解码后的值分配给 out 值。

如果要解码一系列文档,请调用yaml.NewDecoder()数据流,然后.Decode(...)多次调用解码器。用于io.EOF标识记录的结尾。

for我通常为此使用带有break条件的无限循环:

decoder := yaml.NewDecoder(bytes.NewBufferString(data))

for {

    var d Doc

    if err := decoder.Decode(&d); err != nil {

        if err == io.EOF {

            break

        }

        panic(fmt.Errorf("Document decode failed: %w", err))

    }

    fmt.Printf("%+v\n", d)

}

fmt.Printf("All documents decoded")

(https://go.dev/play/p/01xdzDN0qB7)


查看完整回答
反对 回复 2022-10-31
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信