json怎么判断类型
if q.Number == '0' {fmt.Println("q.Number is string!Pass" )}if q.Number == 0 {fmt.Println("q.Number is not string!Wrong" )}
看上去很粗暴但是很实用,并没有查到满意的方法,待补充。
package main
import ("encoding/json""fmt"
)//type Product struct {
// Name string
// ProductID int64
// Number int
// Price float64
// IsOnSale bool
//}
// Product _
type Product struct {Name string `json:"name"`ProductID int64 `json:"-"` // 表示不进行序列化Number int `json:"number, string"`Price float64 `json:"price, int"`IsOnSale bool `json:"_is_on_sale"`
}var test struct {t interface{}
}func main() {p := &Product{}p.Name = "Hodge"p.IsOnSale = falsep.Number = 0p.Price = 0.00p.ProductID = 3data, _ := json.Marshal(p)fmt.Println(string(data))// {"Name":"Hodge","ProductID":3,"Number":1,"Price":2,"IsOnSale":true}//t := test{}q := &Product{}json.Unmarshal([]byte(data), q)fmt.Println(*q)if q.Number == '0' {fmt.Println("q.Number is string!Pass" )}if q.Number == 0 {fmt.Println("q.Number is not string!Wrong" )}
}