go Lang load无法处理yaml文件

2024年 2月 9日 55.8k 0

go lang load无法处理yaml文件

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 定义。

要支持 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 Lang load无法处理yaml文件的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论