我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使 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的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《如何使 golang 中的 unmarshall 函数处理多种类型?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家
如何使 golang 中的 unmarshall 函数处理多种类型?
2024-04-04

映射中的多种函数类型,Golang

映射是Golang中一种强大的数据结构,它允许我们将一个值与另一个值相关联。在Golang中,我们可以使用映射来实现各种不同类型的函数。php小编柚子将在本文中介绍映射中的多种函数类型,包括普通函数、匿名函数和方法。不仅如此,我们还将探讨如
映射中的多种函数类型,Golang
2024-02-12

Golang泛型如何在函数中处理不同类型的数据?

go 泛型通过类型参数允许函数处理不同类型的数据。通过使用可比较类型参数 t,max 函数可以返回两个值中较大的那个,适用于任何可比较类型。Go 泛型:在函数中处理不同类型数据Go 泛型允许我们创建适用于多种类型的通用代码。以下是如何在
Golang泛型如何在函数中处理不同类型的数据?
2024-04-17

如何理解 Golang 中函数类型的高阶函数?

golang 高阶函数可接受和返回函数。它们分两类:接收函数作为参数:处理其他函数或执行动态程序。返回函数作为返回值:创建和返回可存储和后期执行的函数。理解 Golang 高阶函数Golang 中的高阶函数是一种可以接受和返回函数作为参数
如何理解 Golang 中函数类型的高阶函数?
2024-04-20

如何在golang中编写一个函数来处理两种类型的输入数据

你在学习Golang相关的知识吗?本文《如何在golang中编写一个函数来处理两种类型的输入数据》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!问题内容我有多个
如何在golang中编写一个函数来处理两种类型的输入数据
2024-04-04

使用类型断言在golang函数中处理不同类型的错误

在 go 函数中处理不同类型的错误时,可以使用类型断言来检查变量的实际类型并将其转换为所需的类型。类型断言的语法为:variable, ok := interfacevariable.(type),其中 variable 是要检查的 int
使用类型断言在golang函数中处理不同类型的错误
2024-04-24

泛型函数在Golang中如何处理指针和引用类型?

泛型函数在 go 中处理指针类型时,会收到原始变量的引用,允许修改变量值。引用类型则在传递时会被复制,使函数无法修改原始变量值。实战案例包括使用泛型函数比较字符串或数字切片。泛型函数在 Go 中如何处理指针和引用类型简介泛型是一个允许我
泛型函数在Golang中如何处理指针和引用类型?
2024-04-16

如何在 Golang 中获取函数的类型?

在 golang 中,我们可以使用 reflect.typeof() 函数获取函数类型:获取函数类型:fntype := reflect.typeof(add)打印函数类型:fmt.println("函数类型:", fntype)获取函数名
如何在 Golang 中获取函数的类型?
2024-04-20

PHP 中如何模拟具有多种返回值类型的函数?

在 php 中模拟具有多种返回值类型的函数:使用数组。1. 定义一个返回数组的函数,每个值都对应一个键值对。2. 使用数组访问符号('[]')获取单个返回值。在 PHP 中模拟具有多种返回值类型的函数简介在 PHP 中,函数通常返回单个
PHP 中如何模拟具有多种返回值类型的函数?
2024-04-10

C++ 函数重载中如何处理不同参数类型的函数?

c++++ 函数重载允许同名函数参数不同:参数列表不同(类型、数量、顺序)返回类型可相同或不同处理不同参数类型函数时,编译器使用参数推导和类型转换判定要调用的重载函数。在 C++ 中,函数重载允许我们有多个具有相同名称但参数不同的函数。当调
C++ 函数重载中如何处理不同参数类型的函数?
2024-04-14

在 Golang 分布式系统中如何使用函数类型?

在 go 分布式系统中使用函数类型可以实现以下用例:回调函数:将函数作为参数传递,操作完成时调用。消息处理函数:将处理传入消息的函数类型注册到消息队列。分布式任务:将代表任务的函数类型传递给分布式工作池,并行执行任务。在 Go 分布式系统中
在 Golang 分布式系统中如何使用函数类型?
2024-04-22

golang函数中的类型断言是如何实现的?

类型断言通过以下步骤实现:编译器生成包含类型信息和方法表的 runtime.type 结构体。对一个值进行类型断言时,编译器检查其 runtime.type 结构体是否与目标类型匹配。匹配成功时,类型断言成功,ok 为 true,并提取值。
golang函数中的类型断言是如何实现的?
2024-05-23

PHP8如何使用Mixed Type处理各种不同类型的数据?

PHP8如何使用Mixed Type处理各种不同类型的数据?PHP8是PHP语言的最新版本,引入了许多新的功能和改进。其中一个重要的改进是Mixed Type(混合类型)的引入,它允许开发者在函数参数、返回值和变量声明中处理各种不同类型的数
2023-10-22

如何使用 Golang 的 recover() 函数处理恐慌?

通过使用 recover() 函数,可捕获当前函数上下文的恐慌,防止程序崩溃并优雅地处理错误:recover() 在未发生恐慌时返回 nil,在发生未捕获恐慌或从发生恐慌的函数恢复时返回恐慌值。在函数调用周围添加 defer 回调可捕获恐慌
如何使用 Golang 的 recover() 函数处理恐慌?
2024-05-14

Golang泛型如何解决函数中与类型相关的错误?

泛型解决了 go 函数中与类型相关的错误,允许创建通用函数,可接受并操作各种类型的数据。通过使用类型变量,泛型函数可以适应传递给它们的任何类型,从而避免类型冲突错误,并简化和提高代码的灵活性。Go 泛型用于解决函数中与类型相关的错误在 G
Golang泛型如何解决函数中与类型相关的错误?
2024-04-16

PHP8如何使用Mixed Type来处理各种不同类型的数据?

PHP8如何使用Mixed Type来处理各种不同类型的数据?摘要:PHP8引入了Mixed Type,它是一种灵活的数据类型,可以处理各种不同类型的数据。本文将介绍Mixed Type的特性,并提供一些具体的代码示例,以帮助读者更好地了解
2023-10-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录