gpt4 book ai didi

json - Unmarshal 中的动态类型

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

我目前遇到以下问题:

我通过 websocket 得到一个 []byte/string 看起来像

eventname {"JSON": "data", "In": "different formats"}

我用事件名称和 JSON 数据之间的空格拆分字符串,根据事件名称,我想将 json.Unmarshal() JSON 数据转换为特定类型或 var一个特定的类型,以确保它的所有类型都是安全的。

所以我可能会有一个映射,其中包含所有可能的事件名称和 JSON 数据的相应类型,但我不确定我将如何保存类型,可能是通过引用还是通过字符串化名称?

type EventTypeList map[string]*interface{}

type EventTypeList map[string]string

所以我可以查找事件是否在 EventTypeList 中,然后让 Unmarshal 函数将数据解析为映射中的类型。

所以基本上不是特定类型“SpecificData”:

type SpecificData struct {
JSON string
In string
}

socketData := SpecificData{}
err := json.Unmarshal(jsonData, &socketData)

我想根据 EventTypeList 中的类型动态创建 socketData var

socketData := [dynamically determine this Type from EventTypeList]{}

在我将数据解析为该类型后,我想调用该事件的所有监听器并为它们提供正确类型的 socketData,以便它们可以处理预期的数据。

但我真的不确定我将如何完成这个,如果这是可能的或者这是否是正确的方法...

感谢您的帮助!

最佳答案

好吧,经过重新搜索,我认为我想要实现的是不可能的,因为类型需要在编译时知道,正如这里提到的:

Golang: cast an interface to a typed variable dynamically

但我认为我可以将原始 JSON 字符串传递给监听器回调,并在已知数据类型的函数中解码数据。

感谢所有贡献!

关于json - Unmarshal 中的动态类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131035/

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