登录
首页 >  Golang >  Go问答

在 Go 中将 JSON []byte 编组为字符串

来源:Golang技术栈

时间:2023-04-13 19:39:14 399浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《在 Go 中将 JSON []byte 编组为字符串》带大家来了解一下在 Go 中将 JSON []byte 编组为字符串,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我有一个包含字符串作为 []byte 字段的结构,我想将其编码为 JSON。但是,生成的 JSON 包含切片内容的非预期字符串表示。这是我所指的一个例子:

package main

import (
    "fmt"
    "encoding/json"
    )

type Msg struct {
    Content []byte
}

func main() {
    helloStr := "Hello"
    helloSlc := []byte(helloStr)
    fmt.Println(helloStr, helloSlc)

    obj := Msg{helloSlc}
    json, _ := json.Marshal(obj)
    fmt.Println(string(json))
}

这会产生以下输出:

Hello [72 101 108 108 111]
{"Content":"SGVsbG8="}

json.Marshal()方法对 []byte 编码的字符串执行什么样的转换。如何使用我的字符串 {"Content":"Hello"} 的原始内容生成 JSON?

正确答案

A[]byte被编组为 base64 编码字符串。从文档中:

数组和切片值编码为 JSON 数组,但[]byte编码为 base64 编码字符串,nil 切片编码为空 JSON 对象。

这些值在解组时被正确解码。

这样做的原因是 JSON 没有原始字节的本机表示。有关详细说明,请参阅[此问题](https://stackoverflow.com/questions/1443158/binary- data-in-json-string-something-better-than-base64)。

今天关于《在 Go 中将 JSON []byte 编组为字符串》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>