我正在为Golang开发一个Telegram Bot API包装器(我知道已经有一些,但我这样做是为了学习)。我有一个Response结构:
type Response struct {
Ok bool `json:"ok"`
ErrorCode int64 `json:"error_code"`
Description string `json:"description"`
Result interface{} `json:"result"`
}
我无法知道Result
的实际类型:电报服务器可以返回很多内容;我为每个人制作了一个结构,但我不知道哪一个会在Result
。
当{{1}将HTTP响应中的JSON添加到Unmarshal
结构中时,除了Response
之外,所有内容都已正确加载。
在我确定结果为Result
(例如)的函数中,我正在执行User
,但是我在运行时遇到以下错误 :
user := resp.Result.(*User)
。因此,panic: interface conversion: interface {} is map[string]interface {}, not *tgbot.User
是Result
。如何将其转换为map[string]interface{}
?
感谢您的回答。
答案 0 :(得分:6)
将它设为json.RawMessage
并在第二步解组它,当你确定它是什么类型时。