php小编子墨发现,许多Go语言开发者在处理yaml文件时遇到了问题。尽管Go语言提供了load函数用于加载yaml文件,但是该函数却无法正确处理yaml文件的解析。这个问题导致了很多开发者在处理yaml文件时遇到了困难。那么,如何解决这个问题呢?在本文中,我们将为大家介绍一些解决方案,帮助开发者顺利处理yaml文件。
问题内容
我正在尝试读取 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: %sn", sListResponse)
}
登录后复制
代码读取版本部分,但 bunits 数组为空。请提出建议。
解决方法
您的结构体用 json
标记进行装饰 - 您可能需要也可能不需要(取决于您稍后是否以 json 格式导出/导入此数据)。
但你手头的问题是 yaml
导入 - 所以你需要用 yaml
标签来装饰你的 struct
定义。
要支持 json
和 yaml
编组/解组,只需更新您的标签,如下所示:
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 Lang load无法处理yaml文件的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!