iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >如何使 golang 中的 unmarshall 函数处理多种类型?
  • 112
分享到

如何使 golang 中的 unmarshall 函数处理多种类型?

2024-04-04 23:04:18 112人浏览 独家记忆
摘要

小伙伴们对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文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作