Go YAML unmarshal不会将所有对象结构解码为通用接口。有什么想法吗?

时间:2019-12-05 05:12:20

标签: go yaml unmarshalling

以下Go程序为什么不起作用?统帅后地图是空的。我可以做些更改来正确反序列化吗?还是我应该最终使用yaml.Node

package main

import (
    "fmt"
    "gopkg.in/yaml.v3"
)

func main() {
    empYaml := `
      employees:
        - id: 11
          name: Irshad
          department: IT
          designation: Product Manager
          address:
            city: Mumba
            state: Maharashtra
            country: India
    `

    var result map[string]interface{}
    yaml.Unmarshal([]byte(empYaml), &result)

    fmt.Println(result)
}

播放网址:https://play.golang.org/p/tG44j15mNjH

1 个答案:

答案 0 :(得分:2)

当我检查对yaml.Unmarshal的呼叫中的错误时,我看到了错误:

  

2009/11/10 23:00:00 yaml:第2行:找到了无法启动任何令牌的字符

之所以这样,可能是由于自YAML forbids tabs起,内容中的制表符。

从YAML内容中删除所有制表符,您应该处于良好状态。我得到以下输出:

map[employees:[map[address:map[city:Mumba country:India state:Maharashtra] department:IT designation:Product Manager id:11 name:Irshad]]]