2015-08-19 48 views
1

我有一個struct在去其中包含float64字段。然而,當我把這個字段的值編組到一個json對象時,它給了我一個指數。 根據我對這裏有類似問題的人的研究,我明白在json對象中它將是數字,並且它將成爲float64,但我不太瞭解如何讀取實際數字而不是float64。 這是我的代碼示例。元帥float64到JSON中去

http://play.golang.org/p/pR1B2oBKw2

它顯示了一個字符串和float64都具有相同的價值觀和所有我想要的是我的JSON對象上正確dislpayed的float64。 我在這個論壇上發現了類似的問題,但沒有一個人似乎有一個簡單的答案。它們似乎都是我的解決方法,並且與解組對象相關,而不是相反。

+0

誰能至少目前大約向下選票一些意見?想了解爲什麼我的問題不相關或不清楚? –

+1

你的問題是好的,我懷疑你會收到任何關於反對票的評論。不要讓他們打擾你。歡迎來到StackOverflow;) – kostya

回答

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 
} 

playground