json.Marshal(v interface{}) ([]byte, error)
- 如果传入的v是一个 reference,则直接进行 marshal
- 如果传入的v是一个 pointer,则会将 pointer 中的内容解析,再进行marshal
json.Unmarshal(data []byte, v interface{}) error
- 如果传入的v是一个 reference,则匹配相应的字段来进行 unmarshal
- 如果传入的v是一个 pointer,则会报错:
json: Unmarshal(nil *srv.Animal)
- 因此如果期望用指针来 unmarshal
data []byte
,需要将指针指向某一空间,或者封装为结构体,并用结构体变量的指针当作 unmarshal 的入参 v,才能够正确解析 data 内容
Example
func main() {
type Animal struct {
Name string
}
type Human struct {
Attr string
}
animal := Animal{
Name