func Marshal(v interface{}) ([]byte, error) {
e := newEncodeState()
err := e.marshal(v, encOpts{escapeHTML: true})
if err != nil {
return nil, err
}
buf := append([]byte(nil), e.Bytes()...)
encodeStatePool.Put(e)
return buf, nil
}
参数为interface{},interface{}类型是个空接口,即没有方法的接口。go的每一种类型都实现了该接口。因此,任何其他类型的数据都可以赋值给interface{}类型
type Stu struct {
Name interface{} `json:"名字"` //定义显示别名
Age interface{} `json:"年龄"`
HIgh interface{} `json:"high"`
sex interface{} `json:"性别"`
}
func main() {
stu := Stu{
Name: "jock.jack jams.Jon",
Age: 18,
HIgh: true,
sex: "男",
}
sby, _ := json.Marshal(stu)
fmt.Println(string(sby))
//统计字符串包含"."的个数
var period = regexp.MustCompile("\\.")
blank := len(period.FindAllStringSubmatch(string(sby), -1))
fmt.Println(blank)
//返回结果
{"名字":"jock.jack jams.Jon","年龄":18,"high":true}
2
}