golang json Marshal默認(rèn)對(duì)[]byte類型進(jìn)行base64編碼處理,Unmarshal時(shí)也只能用[]byte類型接收才能還原。
代碼示例:
package main
import (
"encoding/json"
"log"
)
type testa struct {
X string
Y []byte
}
type testb struct {
X string
Y interface{}
}
func main() {
a := testa{X: "xtest", Y: []byte("ytest")}
log.Println(a)
b, _ := json.Marshal(a)
log.Println(string(b))
var c testa
var d testb
json.Unmarshal(b, &c)
json.Unmarshal(b, &d)
log.Println(c)
log.Println(d)
}
輸出結(jié)果:
2019/03/20 13:57:24 {xtest [121 116 101 115 116]}
2019/03/20 13:57:24 {"X":"xtest","Y":"eXRlc3Q="}
2019/03/20 13:57:24 {xtest [121 116 101 115 116]}
2019/03/20 13:57:24 {xtest eXRlc3Q=}