【Golang】解决使用interface{}解析json数字会变成科学计数法的问题

在使用解析json结构体的时候,使用interface{}接数字会发现变成了科学计数法格式的数字,不符合实际场景的使用要求。
举例代码如下:


type JsonUnmStruct struct {Id   interface{} `json:"id"`Name string      `json:"name"`
}func Test_JsonUnmErr(t *testing.T) {var b = []byte(`{"id": 12423434, "Name": "Tom"}`)var f JsonUnmStructunmarshalErr := json.Unmarshal(b, &f)if unmarshalErr != nil {t.Fatal(unmarshalErr)}t.Logf("%+v", f)
}

实际上的输出结果是:

=== RUN Test_JsonUnmErr
json_unm_test.go:27: {Id:1.2423434e+07 Name:Tom}
— PASS: Test_JsonUnmErr (0.00s)

在这里插入图片描述

如果想要数字以不变的方式来进行序列化/反序列化,可以使用json.DecoderUseNumber方法,它会把所有的数字解析为json.Number类型的数(是数字的原始字符串的表示形式)
具体代码如下:

func Test_JsonUnmCorrect(t *testing.T) {var b = []byte(`{"id": 12423434, "Name": "Tom"}`)d := json.NewDecoder(strings.NewReader(string(b)))d.UseNumber()var f JsonUnmStructdecodeErr := d.Decode(&f)if decodeErr != nil {t.Fatal(decodeErr)}t.Logf("%+v", f)
}

输出结果

=== RUN Test_JsonUnmCorrect
json_unm_test.go:44: {Id:12423434 Name:Tom}
— PASS: Test_JsonUnmCorrect (0.00s)

在这里插入图片描述

参考链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/166423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 的性能调优的思路

Linux操作系统是一个开源产品,也是一个开源软件的实践和应用平台,在这个平台下有无数的开源软件支撑,我们常见的apache、tomcat、mysql等。 开源软件的最大理念是自由、开放,那么Linux作为一个开源平台,最终要实现的是…

Java反射调用kotlin中的类,Object类,Companion对

Java反射调用kotlin中的类,Object类,Companion对象 1. Java反射调用kotlin中的普通类 kotlin普通类: package com.common; class TestNormal {fun get():String{return "Nolmal abc"}fun showNum(v:Int){println("Nolmal s…

uniApp微信支付实现

后端:小程序下单 - 小程序支付 | 微信支付商户文档中心 服务端需要请求:https://api.mch.weixin.qq.com该地址获取微信支付Api接口需要的参数。 服务端请求接口需要的Body参数: 客户端(前端)需要调用:wx.…

12V降3.3V100mA稳压芯片WT7133

12V降3.3V100mA稳压芯片WT7133 WT71XX系列是一款采用CMOS工艺实现的三端高输入电压、低压差、小输出电流电压稳压器。 它的输出电流可达到100mA,输入电压可达到18V。其固定输出电压的范围是2.5V~8.0V,用户 也可通过外围应用电路来实现可变电压…

加载minio中存储的静态文件html,不显示样式与js

问题描述:点击链接获取的就是纯静态文件,但是通过浏览器可以看到明明加载了css文件与js文件 原因:仔细看你会发现加载css文件显示的contentType:text/html文件,原来是minio上传文件时将所有文件的contentType设置成了text/html 要在上传时指定文件,根据文章的类型指定的Conten…

css 固定按钮到页面顶部或者底部的实现方式

实现方式 要将按钮固定到顶部或底部&#xff0c;可以使用CSS的定位属性来实现。下面是一种常用的方法&#xff1a; 创建一个包含按钮的HTML元素&#xff0c;例如一个<div>元素。确保给它添加一个唯一的id&#xff0c;以便在CSS中进行定位。 <div id"myButton&qu…

从二极管到linux服务器

软件设计: os: 批处理系统: 轮询系统:单片机裸机开发 实时系统:ucosii,rtos,rt-thread、风和系统、liteos(主要是海思系列soc在用)等 非实时系统:linux 对os任务切换时寄存器的功能有理解。 对ipc机制有理解。 bsp: 需要对寄存器、单片机内部总线、iic、spi、uart、c…

win10开机黑屏只有鼠标?这份指南帮你轻松解决!

win10是一个出色的操作系统&#xff0c;但有时用户可能会遇到开机后只有鼠标显示在屏幕上的问题&#xff0c;这种情况可能会让人感到困惑和沮丧。在本文中&#xff0c;我们将介绍三种解决win10开机黑屏只有鼠标的方法&#xff0c;以帮助您快速恢复正常的桌面环境。 方法1&#…

Ubuntu18.4中安装wkhtmltopdf + Odoo16配置【二】

deepin Linux 安装wkhtmltopdf 1、先从官网的链接里下载linux对应的包 wkhtmltopdf/wkhtmltopdf 下载需要的版本&#xff0c;推荐版本&#xff0c;新测有效&#xff1a; wkhtmltox-0.12.4_linux-generic-amd64.tar.xz 2、解压下载的文件 解压后会有一个wkhtmltox文件夹 3…

CTA-GAN:基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影 CT到增强CT的合成技术

Generative Adversarial Network–based Noncontrast CT Angiography for Aorta and Carotid Arteries 基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影背景贡献实验方法损失函数Thinking 基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影 https://github.com/ying-f…

可自行DIY单TYPE-C接口设备实现DRP+OTG功能芯片

随着USB-C接口的普及&#xff0c;欧盟的法律法规强制越来越多的设备开始采用这种接口。由于 USB-C接口的高效性和便携性&#xff0c;使各种设备之间的连接和数据传输变得非常方便快捷&#xff0c;它们不仅提供了强大的功能&#xff0c;还为我们的日常生活和工作带来了极大的便利…

Python与设计模式--代理模式

5-Python与设计模式–代理模式 一、网络服务器配置白名单 代理模式是一种使用频率非常高的模式&#xff0c;在多个著名的开源软件和当前多个著名的互联网产品后 台程序中都有所应用。下面我们用一个抽象化的简单例子&#xff0c;来说明代理模式。 首先&#xff0c;构造一个网络…

ssm+vue的企业文档管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的企业文档管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

Talk | 牛津大学博士后研究员边佳旺:SC-DepthV3-动态场景中的自监督单目深度估计

本期为TechBeat人工智能社区第550期线上Talk。 北京时间11月23日(周四)20:00&#xff0c;牛津大学博士后研究员—边佳旺的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “SC-DepthV3&#xff1a;动态场景中的自监督单目深度估计”&#xff0c;介绍…

Vocoder,声码器详解——语音信号处理学习(十)

参考文献&#xff1a; [1] Vocoder (由助教許博竣同學講授)哔哩哔哩bilibili [2] Oord A, Dieleman S, Zen H, et al. Wavenet: A generative model for raw audio[J]. arXiv preprint arXiv:1609.03499, 2016. [3] https://deepmind.com/blog/article/wavenet-generative-mode…

【华为OD机试题】 给出一个区间的集合,请合并所有重叠的区间。

给出一个区间的集合&#xff0c;请合并所有重叠的区间。 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] #输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: #输入: [[1,4],[4,5]] #输出: [[1,5]] #解释: 区间 [1,4] 和 [4,5] 可被视…

window.requestAnimationFrame+localStorage+canvas实现跨窗口小球连线效果

文章目录 前言效果代码后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端系列文章 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;感谢大家…

FPGA----ZCU106使用petalinux 2019.1的第一个app开发

1、petalinux在zcu106上的构建参见前文 FPGA----ZCU106使用petalinux 2019.1&#xff08;全网最详&#xff09;-CSDN博客文章浏览阅读31次。本文完成了Vivado 2019.1版本下的基于ZCU106的全部linux系统移植https://blog.csdn.net/qq_37912811/article/details/1345197352、我们…

Vatee万腾科技的未来探险:Vatee数字创新的独特发现

在科技的浩瀚海洋中&#xff0c;Vatee万腾科技如一艘探险船般&#xff0c;勇敢地驶向未知的数字化领域。这次未来的探险&#xff0c;不仅是一场科技创新的冒险&#xff0c;更是对数字化时代的独特发现和深刻探讨。 Vatee万腾科技视科技创新为一座高峰&#xff0c;而他们的未来探…

java类中局部变量和成员变量有啥区别?

java类中局部变量和成员变量有啥区别&#xff1f; 举个例子&#xff0c;我们可以定义一个Person类&#xff0c;其中有两个成员变量name和age&#xff0c;以及一个构造方法和一个show方法。在构造方法中&#xff0c;我们可以使用this关键字来引用成员变量&#xff0c;以区分同名…