Golang作為一門強類型語言,其在JSON解析中對于浮點數有一些特殊的處理方式。
首先,Golang中的浮點數類型是`float32`和`float64`。而JSON中的浮點數是基于科學計數的表示法,例如`1.23e-4`。
在數字解析階段,Golang會將JSON中的浮點數直接解析為`float64`。如果你希望在解析JSON時得到`float32`類型的浮點數,則需要進行強制類型轉換。
import "encoding/json"
type Data struct {
Value float32 `json:"value"`
}
func ParseJson(str string) Data {
data := Data{}
json.Unmarshal([]byte(str), &data)
data.Value = float32(data.Value) // 強制類型轉換為float32
return data
}
另外需要注意的一點是,在將浮點數編碼為JSON字符串時,Golang會對一些特殊的浮點數進行處理。例如,`+Inf`會被編碼為`null`,而`NaN`會被編碼為`NaN`。
data := map[string]float64{"value1": 1.23, "value2": math.Inf(1), "value3": math.NaN()}
bytes, _ := json.Marshal(data)
fmt.Println(string(bytes))
// 輸出: {"value1":1.23,"value2":null,"value3":"NaN"}
以上就是Golang對于JSON浮點數的處理方式及需要注意的地方。
下一篇vue嵌套其他組件