golang中的json decode丢失精度的问题

golang中的json decode丢失精度的问题最近发现的一个坑当用enconding/json包的时候,数字默认是处理为float64类型的,这就导致了int64可能会丢失精度,这时候要用dec.UseNumber将处理的数字转换成json.Number的形式,再自己去做typeassertion代码packagemainimport( "fmt" "encoding/json" "strings")funcCr…

大家好,又见面了,我是你们的朋友全栈君。

最近发现的一个坑
当用enconding/json包的时候,数字默认是处理为float64类型的,这就导致了int64可能会丢失精度,这时候要用dec.UseNumber将处理的数字转换成json.Number的形式,再自己去做type assertion
代码

package main

import (
	"fmt"
	"encoding/json"
	"strings"
)

func CreateJsonUseNum(source string) map[string]interface{} {
	data := map[string]interface{}{}
	dec := json.NewDecoder(strings.NewReader(source))
	dec.UseNumber()
	dec.Decode(&data)
	return data
}

func CreateJson(source string) map[string]interface{} {
	data := map[string]interface{}{}
	dec := json.NewDecoder(strings.NewReader(source))
	dec.Decode(&data)
	return data
}

func main() {
        strMap := `{"test": true,"id":6653078421906374662}`
	p := CreateJson(strMap)
	p2 := CreateJsonUseNum(strMap)
	fmt.Println(p)
	fmt.Println(p2)
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160665.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月17日 下午5:00
下一篇 2022年7月17日 下午5:00


相关推荐

  • 如何制作bom表_如何制作bom表

    如何制作bom表_如何制作bom表(全路径Excel软件视频教程都可领取会员后免费学习)点我领会员免费学Excel全套基础入门教程!一、Excel软件入门MicrosoftExcel是Microsoft为使用Windows和AppleMacintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。第一章软件入门介绍第1课软件…

    2022年8月29日
    5
  • Windows XP虚拟机安装全过程(VMware)「建议收藏」

    Windows XP虚拟机安装全过程(VMware)「建议收藏」​1.准备工作VMware没有装上的,可以参考一下之前装win2000的前半部分:博客链接然后电脑要安装一个迅雷,下载链接:迅雷下载链接;最后,就是大名鼎鼎的网站NextItellyou(原msdn我告诉你)的账号啦,链接:网站链接所有这些准备工作都做好之后,就可以开始下一步了~2.下载WindowsXP镜像(非百度网盘)打开NextItellyou官方网站,然后点击WindowsXP;然后点黄色箭头指向的“复制”;然后打开迅雷,它应该就会自动跳出下

    2022年8月16日
    12
  • Java的注解

    Java的注解一、注解的概念:注解并不是一开始就有的,JDK5之前是没有注解的,JDK5及其以后JDK版本才开始支持Java注解!Java注解(Annotation)也叫做元数据,以@注解名在代码中存在,它是一种在源代码中标注的特殊标记,可以标注源代码中的类、属性、方法、参数等代码,主要用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。1.1Java注解按照含有参数的个数分为三种:不带参数,语法结构为:@Annotation,例如@FunctionalInterface;带一个参数的注解,语

    2022年7月9日
    22
  • 送1000万Tokens+0.1元/百万Tokens,超算互联网推动OpenClaw走向普惠

    送1000万Tokens+0.1元/百万Tokens,超算互联网推动OpenClaw走向普惠

    2026年3月12日
    1
  • shiro框架是什么_中国历史知识框架

    shiro框架是什么_中国历史知识框架Shiro 1.权限管理概述2.Shiro权限框架  2.1概念  2.2ApacheShiro与SpringSecurity区别3.Shiro认证  3.1基于ini认证  3.2自定义Realm–认证4.Shiro授权  4.1基于ini授权  4.2自定义realm–授权5.项目集成shiro认证-授权注意点  5.1认证  5.2授权  5.3注解@RequiresPermissions()  5.4标签式权限验证6.S

    2025年10月9日
    5
  • Json文件格式化方法

    Json文件格式化方法vscode 编辑器功能非常强大 是最好用的编辑器之一 那么对于一个 json 文件 如果没有很美观的展示 那是相当讨厌的

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号