golang之json小谈

有时会有这种需求,将一个json数据形如:

{"x":"golang", "y":"520.1314"}

中的y反序列化为浮点类型,如果这样写
package mainimport ( "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) } }

【golang之json小谈】会报错:
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是被编码成字符串的浮点数

    推荐阅读