我有一个struct包含float64字段的 in go。然而,当我将此字段的值编组到 json 对象时,它给了我一个指数数。根据我对这里有类似问题的人的研究,我知道在 json 对象中它将是数字,在 go 中它将是 float64,但是我不太明白如何读取实际数字而不是 float64。这是我的代码示例。
http://play.golang.org/p/pR1B2oBKw2
它显示了一个字符串和一个 float64 ,两者都具有相同的值,我想要的只是在我的 json 对象上正确显示 float64 。我在这个论坛上发现了类似的问题,但似乎没有一个有直接的答案。对我来说,它们似乎都是解决方法,并且与解组对象有关,而不是相反。
短版,你不能。
长版?创建你自己的类型!
type FloatString float64
func (fs FloatString) MarshalJSON() ([]byte, error) {
vs := strconv.FormatFloat(float64(fs), 'f', 2, 64)
return []byte(`"` + vs + `"`), nil
}
func (fs *FloatString) UnmarshalJSON(b []byte) error {
if b[0] == '"' {
b = b[1 : len(b)-1]
}
f, err := strconv.ParseFloat(string(b), 64)
*fs = FloatString(f)
return err
}
Run Code Online (Sandbox Code Playgroud)