gpt4 book ai didi

json - 在 Go 中将 JSON []byte 编码为字符串

转载 作者:IT王子 更新时间:2023-10-29 01:17:23 28 4
gpt4 key购买 nike

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

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?

最佳答案

[]byte 被编码为 base64 编码的字符串。来自documentation :

Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON object.

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

这样做的原因是 JSON 没有原始字节的 native 表示。参见 this question以获得详细的解释。

关于json - 在 Go 中将 JSON []byte 编码为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36465065/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com