gpt4 book ai didi

json - 使用json.Unmarshal()时保留尾随零

转载 作者:行者123 更新时间:2023-12-01 22:31:24 27 4
gpt4 key购买 nike

这不是Stop json.Marshal() from stripping trailing zero from floating point number的副本,因为我希望编码(marshal)(即,解析JSON编码的数据)。
尾随的.0在以下代码中被剥离:https://play.golang.org/p/jrQ3OSvoTt5

package main

import (
"encoding/json"
"fmt"
)

func main() {
var result map[string]interface{}
json.Unmarshal([]byte(`{"foo": 1.0}`), &result)

// map[foo:1]
fmt.Println(result)
}
JSON的结构仅在运行时才知道,因此我必须将其解析为 map[string]interface{}
虽然我欣赏 11.0在数值上是等效的,但我需要能够区分两者。

最佳答案

默认的拆组器使用float64。您必须将DecoderUseNumber一起使用,然后数字将被解编为json.Number,您可以对其进行处理。

func main() {
var result map[string]interface{}
dec := json.NewDecoder(strings.NewReader(`{"foo": 1.0}`))
dec.UseNumber()
dec.Decode(&result)

// map[foo:1]
fmt.Println(result)
fmt.Println(result["foo"].(json.Number).String())
fmt.Println(result["foo"].(json.Number).Float64())
}

关于json - 使用json.Unmarshal()时保留尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63510789/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com