我的广告struct
包含float64
字段。但是当我将这个字段的值编组到一个json对象上时,它给出了一个指数。
基于我对这里有类似问题的人的研究,我明白在json对象中它将是数字,并且在go中它将是一个float64,但是我不太明白如何读取实际数字而不是float64。
这是我的代码示例。
http://play.golang.org/p/pR1B2oBKw2
它显示了一个字符串和一个float64都具有相同的值,我想要的是在我的json对象上正确显示的float64。 我在这个论坛上发现了类似的问题,但似乎都没有一个直截了当的答案。它们似乎对我来说都是变通方法,并且与解组对象有关,而不是相反。
答案 0 :(得分:4)
简短版本,你可以
长版?创建自己的类型!
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
}