在Golang中使用长数字的JSON封送,提供浮点数
发布时间:2020-12-16 19:10:37 所属栏目:大数据 来源:网络整理
导读:我正在使用golang来封送一个解密的JSONs,而当我想用数字字段进行编码时,golang以浮点数字转换,而不是使用长数字。 我有以下Json: {"id": 12423434,"Name": "Fernando"} 在将它组织到一个地图上,然后再将其解组成一个json字符串,我得到: {"id":1.24234
我正在使用golang来封送一个解密的JSONs,而当我想用数字字段进行编码时,golang以浮点数字转换,而不是使用长数字。
我有以下Json: { "id": 12423434,"Name": "Fernando" } 在将它组织到一个地图上,然后再将其解组成一个json字符串,我得到: { "id":1.2423434e+07,"Name":"Fernando" } 您可以看到“名称”字段是浮点符号。 我使用的代码如下: package main import ( "encoding/json" "fmt" "os" ) func main() { //Create the Json string var b = []byte(` { "id": 12423434,"Name": "Fernando" } `) //Marshal the json to a map var f interface{} json.Unmarshal(b,&f) m := f.(map[string]interface{}) //print the map fmt.Println(m) //unmarshal the map to json result,_:= json.Marshal(m) //print the json os.Stdout.Write(result) } 打印: 似乎是地图的第一个元帅会生成FP。如何解决这个问题? 这是goland游乐场中的节目的链接: 费尔
有时你不能提前定义一个结构体,但仍然要求数字通过元数据组合进程不变。
在这种情况下,您可以使用Json.Decoder上的UseNumber方法,这将使所有数字解组为json.Number(这只是数字的原始字符串表示形式)。这对于在JSON中存储非常大的整数也是有用的。 例如: package main import ( "strings" "encoding/json" "fmt" "log" ) var data = `{ "id": 12423434,"Name": "Fernando" }` func main() { d := json.NewDecoder(strings.NewReader(data)) d.UseNumber() var x interface{} if err := d.Decode(&x); err != nil { log.Fatal(err) } fmt.Printf("decoded to %#vn",x) result,err := json.Marshal(x) if err != nil { log.Fatal(err) } fmt.Printf("encoded to %sn",result) } 结果: decoded to map[string]interface {}{"id":"12423434","Name":"Fernando"} encoded to {"Name":"Fernando","id":12423434} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |