json中的数字类型问题
JSON 协议中没有整型和浮点型之分,都是number。Go中json字符串中的数字经过json包反序列化会成为float64类型。如:
package main
import (
"encoding/json"
"fmt"
)
type Student struct {
Name string `json:"name"`
Age interface{
} `json:"age"`
Weight float64 `json:"weight"`
Height float64 `json:"height"`
}
func main() {
s1 := Student{
Name: "jack",
Age: 20,
Weight: 61.5,
Height: 172.5,
}
fmt.Printf("Before marshal/unmarshal, the type of age: %T\n", s1.Age)
b, err := json.Marshal(s1)
if err != nil {
fmt.Printf("json.Marshal failed, err:%v\n", err)
return
}
fmt.Printf("s1: %s\n", b)
var s2 Student
err = json.Unmarshal(b, &s2)
if err != nil {
fmt.Printf("json.Unmarshal failed, err:%v\n", err)