gpt4 book ai didi

go - 在 Golang 中找出正确的结构来解析一个简单的 YAML 文件

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:12 24 4
gpt4 key购买 nike

我有一个相当简单的 YAML 文档来解析成 Go 中的(最好) map 。

YAML 文档:

---
A: Logon
'0': Heartbeat
'1': Test Request
'2': Resend Request
'3': Reject
'4': Sequence Reset
'5': Logout
'8': Execution Report
S: Quote
AE: Trade Capture Report
B: News
h: Trading Session Status
f: Security Status

我正在尝试将其编码

type TranslationVal struct {
Map map[string]string
}

translationVal := TranslationVal{}
err := yaml.Unmarshal([]byte(val), &translationVal)

但是我得到:

2017/08/22 20:33:23 yaml: unmarshal errors:   line 1: cannot unmarshal !!str `A` into main.TranslationVal

最佳答案

问题是由于您将 map 包裹在一个对象中引起的,YAML 没有这样的嵌套。

map := map[string]string{}
err := yaml.Unmarshal([]byte(val), &map)

您实际上可以直接解码到 map 本身

编辑:很难用你的格式来判断,但如果这些整数键嵌套在 A 下,那么你还需要一个不同的结构,它实际上是一个 map[string]map [string]string——然而这相当难看,所以我建议此时转向不同的范式……您可以使用 map[string]interface{},它不会关心什么类型进入 map ,然后你可以稍后处理它,或者你可以更静态地定义对象,在结构中实际使用诸如 A 之类的键来表示每个项目的去向,如果是这种情况,您将拥有如下所示的对象;

type TranslationVal struct {
A map[string]string
B string
C string
// and so on
F string `yaml:f` // necessary because f would be unexported
}

关于go - 在 Golang 中找出正确的结构来解析一个简单的 YAML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45824062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com