golang json Marshal默认对[]byte类型进行base64编码处理,Unmarshal时也只能用[]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)
}
输出结果:
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=}
网友评论