登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-25 22:54:35 485浏览 收藏

你在学习Golang相关的知识吗?本文《使用 json.Unmarshal() 时保留尾随零》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

这不是 stop json.marshal() 从浮点数中删除尾随零的重复,因为我希望un编组(即解析 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.Unmarshal() 时保留尾随零》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>