大家好,又见面了,我是你们的朋友全栈君。
最近发现的一个坑
当用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)
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160665.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...