golang中如果有以下的类型
type QpsObj struct { Key string `json:"key"` Qps float64 `json:"qps"` }
json.Marshal后会输出如下的字符串 {"key":"test","qps":115.22333333333333}
如果Qps字段只想保存小数点后两位该如何做呢?
一种是实现如下方法
func (j *QpsObj) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`{"key":"%v", "qps":"%0.2f"}`, j.Key, j.Qps)), nil }
输出 {"key":"test","qps":"115.22"}
但如果QpsObj中的字段更多,这种方式就不现实。
思考一阵后想到可以重定义float64类型。代码如下
type MyFloat float64 func (f MyFloat) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf("%0.2f", f)), nil } type QpsObj struct { Key string `json:"key"` Qps MyFloat `json:"qps"` }
输出 {"key":"test","qps":"115.22"}
euraka
标签:自定义,浮点数,QpsObj,golang,json,key,Qps,qps,byte From: https://www.cnblogs.com/xiangism/p/16795057.html