小伙伴们对golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《如何使 Golang 中的 unmarshall 函数处理多种类型?》,就很适合你,本篇文章讲解的知识点主要包括。在之后
小伙伴们对golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《如何使 Golang 中的 unmarshall 函数处理多种类型?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!
问题内容我正在使用 golang 中的 JSON.unmarshalling 函数来解码我们从 api 获得的一些 json 响应。如何让它处理多种类型?
我们收到的响应始终是状态代码和消息,但 json 字段具有不同的名称。有时这两个字段称为代码和消息,有时称为状态代码和描述,具体取决于我们查询的内容。
假设我们查询 apple,这可以通过创建一个 apple 类型结构来简单地解决,如下所示:
type apple struct {
code int `json:"code"`
description string `json:"message"`
}
但是当我们查询peach时,我们返回的json不再是code和message,字段名称变成了statuscode和description。所以我们需要以下内容:
type Peach struct {
Code int `json:"statuscode"`
Description string `json:"description"`
}
我们可能需要再设置 50 个类型并重复写入 50 次?必须有更好的方法来做到这一点。不幸的是,我是 golang 新手,不知道多态性在这种语言中是如何工作的。请帮忙。
据我所知,您应该始终解码为结构,以便从 go static types 和附加到该结构的方法中受益,并且也许能够使用像 validator 这样的包来验证您的响应,但是您始终可以将 json 正文解析为这样的映射:
// JsonParse parses the json body of Http request
func JsonParse(r *http.Request) (map[string]interface{}, error) {
// Read the r.body into a byte array
body, err := ioutil.ReadAll(r.Body)
if err != nil {
return nil, err
}
// Make a map of String keys and Interface Values
b := make(map[string]interface{})
// Unmarshal the body array into the map
err = json.Unmarshal(body, &b)
if err != nil {
return nil, err
}
return b, nil
}
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~
--结束END--
本文标题: 如何使 golang 中的 unmarshall 函数处理多种类型?
本文链接: https://www.lsjlt.com/news/596308.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0