无法使用gopkg.in/yaml.v2解压缩具有缩进或空值的yaml文件

时间:2019-05-17 10:57:32

标签: go yaml

我有以下名为test.yml的YML文件

user_name:Agent1
org_info:
  first:hello
  second:world

我尝试使用以下golang代码解组test.yml

package main

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

func main() {

  content, _ := ioutil.ReadFile("./test.yml")
  var t interface{}
  yaml.Unmarshal(content, &t)
  log.Println(t)
}

但是log.Println(t)给出了nil。我将test.yml文件缩小为:

user_name:Agent1
org_info:

但是log.Println(t)仍然给出nil

如何使用golang解组具有不可预测模式的yaml文件,该文件包含无值的字段或导致嵌套和缩进的子字段的字段?

还是我应该使用另一个golang yaml解析器?

1 个答案:

答案 0 :(得分:3)

yaml.Unmarshal()返回错误:

  

yaml:第2行:在此情况下不允许使用映射值

从不跳过错误检查:

var t interface{}
err = yaml.Unmarshal(content, &t)
if err != nil {
    log.Fatal(err)
}

在冒号后的 处添加缺失的空格,使它们成为YAML值指示符:

user_name: Agent1
org_info:
  first: hello
  second: world