当我尝试将[] byte编组为JSON格式时,我只有一个奇怪的字符串。
请看下面的代码。
我有两个疑问:
如何将[] bytes封送至JSON?
为什么[] byte成为此字符串?
package main import ( "encoding/json" "fmt" "os" ) func main() { type ColorGroup struct { ByteSlice []byte SingleByte byte IntSlice []int } group := ColorGroup{ ByteSlice: []byte{0,0,0,1,2,3}, SingleByte: 10, IntSlice: []int{0,0,0,1,2,3}, } b, err := json.Marshal(group) if err != nil { fmt.Println("error:", err) } os.Stdout.Write(b) }
输出为:
{"ByteSlice":"AAAAAQID","SingleByte":10,"IntSlice":[0,0,0,1,2,3]}
戈朗游乐场:https : //play.golang.org/p/wanppBGzNR
根据文档:https : //golang.org/pkg/encoding/json/#Marshal
数组和切片值编码为JSON数组,除了[] byte编码为base64编码的字符串,而nil slice编码为空JSON对象。
该值AAAAAQID是您的字节片的base64表示形式-例如
AAAAAQID
b, err := base64.StdEncoding.DecodeString("AAAAAQID") if err != nil { log.Fatal(err) } fmt.Printf("%v", b) // Outputs: [0 0 0 1 2 3]