当前位置:  开发笔记 > 编程语言 > 正文

Go:marshal [] byte到JSON,给出一个奇怪的字符串

如何解决《Go:marshal[]byte到JSON,给出一个奇怪的字符串》经验,为你挑选了1个好方法。

当我尝试将[]字节编组为JSON格式时,我只得到一个奇怪的字符串.

请查看以下代码.

我有两个疑问:

如何将[]字节编组为JSON?

为什么[]字节成为这个字符串?

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]}

golang playground:https://play.golang.org/p/wanppBGzNR



1> elithrar..:

根据文档:https://golang.org/pkg/encoding/json/#Marshal

数组和切片值编码为JSON数组,但[]字节编码为base64编码的字符串,而nil切片编码为空JSON对象.

该值AAAAAQID是字节切片的base64表示 - 例如

b, err := base64.StdEncoding.DecodeString("AAAAAQID")
if err != nil {
    log.Fatal(err)
}

fmt.Printf("%v", b)
// Outputs: [0 0 0 1 2 3]

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有