golang中json小談之字串轉浮點數
阿新 • • 發佈:2019-01-28
有時會有這種需求,將一個json資料形如:
{"x":"golang", "y":"520.1314"}
中的y反序列化為浮點型別,如果這樣寫:
package main
import (
"encoding/json"
"fmt"
)
type JsonTest struct {
X string `json:"x"`
Y float64 `json:"y"`
}
func main() {
s := `{"x":"golang", "y":"520.1314"}`
var jt JsonTest
err := json.Unmarshal([]byte (s), &jt)
if err == nil {
fmt.Printf("%+v\n", jt)
} else {
fmt.Println(err)
fmt.Printf("%+v\n", jt)
}
}
會報錯:
json: cannot unmarshal string into Go struct field JsonTest.y of type float64
將結構體JsonTest定義改為如下,即可解決戰鬥:
type JsonTest struct {
X string `json:"x"`
Y float64 `json:"y,string"`
}
這樣寫可以告訴golang的json直譯器變數y是被編碼成字串的浮點數
本文轉載詳細內容:
作者:wu_sphinx
連結:http://www.jianshu.com/p/9856478555c5
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。