【问题标题】:Parse yaml files with "---" in it解析带有“---”的yaml文件
【发布时间】:2022-01-31 01:07:01
【问题描述】:

我正在使用https://github.com/go-yaml/yaml 来解析 yaml 文件:

type TestConfig struct {
   Test string `yaml:"test"`
}


yaml 文件:

test: 123

---

test: 456

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

【问题讨论】:

    标签: go yaml


    【解决方案1】:

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

    yaml.Unmarshal's doc 说(强调我的):

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

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

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

    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)

    【讨论】:

      猜你喜欢
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2012-07-29
      • 2015-04-25
      相关资源
      最近更新 更多