登录
首页 >  Golang >  Go问答

go语言无法解析yaml文件

来源:stackoverflow

时间:2024-03-09 21:27:27 194浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《go语言无法解析yaml文件》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我正在尝试读取 yaml 文件并将其存储在变量中,但由于某种原因,yaml 文件中的数组对象无法解组该文件。它显示空白数据。

下面是我的yaml文件内容

---
version: "1.2"

bunits:
  - name: buname
    bugroupid: asd
    bustgroupid: asd
  - name: buname2
    bugroupid: asd2
    bustgroupid: asd2

下面是正在使用的代码

type SResponse struct {
   Version       string         `json:"version"`
   BUnits []BUnit `json:"bUnits"`
}

type BUnit struct {
    Name                      string `json:"name"`
    BuUnitGroupID       string `json:"buGroupID"`
    BuUnitStGroupID string `json:"buStaticGroupID"`
}
func main() {

    _printf := fmt.Printf
    _printf("Start")
    var sListResponse SResponse

    source, err2 := ioutil.ReadFile("squads2.yml")

    if err2 != nil {
        _printf("Couldn't read yaml file.")
}

    err2 = yaml.Unmarshal(source, &sListResponse)
    if err2 != nil {
    _printf("Error")
    }

    _printf("Output: %s\n", sListResponse)
}

代码读取版本部分,但 bunits 数组为空。请提出建议。


正确答案


您的结构体用 json 标记进行装饰 - 您可能需要也可能不需要(取决于您稍后是否以 json 格式导出/导入此数据)。 但你手头的问题是 yaml 导入 - 所以你需要用 yaml 标签来装饰你的 struct 定义。

要支持 jsonyaml 编组/解组,只需更新您的标签,如下所示:

type SResponse struct {
    Version string  `json:"version" yaml:"version"`
    BUnits  []BUnit `json:"bUnits" yaml:"bUnits"`
}

type BUnit struct {
    Name            string `json:"name" yaml:"name"`
    BuUnitGroupID   string `json:"buGroupID" yaml:"buGroupID"`
    BuUnitStGroupID string `json:"buStaticGroupID" yaml:"buStaticGroupID"`
}

或者如果您不需要 json 编码/解码,则只需删除 json 标签即可。

以上就是《go语言无法解析yaml文件》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>