gpt4 book ai didi

json - 编码 json.RawMessage 返回 base64 编码的字符串

转载 作者:IT老高 更新时间:2023-10-28 13:02:55 27 4
gpt4 key购买 nike

我运行以下代码:

package main

import (
"encoding/json"
"fmt"
)

func main() {
raw := json.RawMessage(`{"foo":"bar"}`)
j, err := json.Marshal(raw)
if err != nil {
panic(err)
}
fmt.Println(string(j))
}

Playground : http://play.golang.org/p/qbkEIZRTPQ

输出:

"eyJmb28iOiJiYXIifQ=="

期望的输出:

{"foo":"bar"}

为什么它对我的 RawMessage 进行 base64 编码,就好像它是一个普通的 []byte

毕竟,RawMessage 的 MarshalJSON 实现只是返回字节 slice

// MarshalJSON returns *m as the JSON encoding of m.
func (m *RawMessage) MarshalJSON() ([]byte, error) {
return *m, nil
}

最佳答案

go-nuts thread 中找到了答案

传递给json.Marshal的值必须是一个指针,json.RawMessage才能正常工作:

package main

import (
"encoding/json"
"fmt"
)

func main() {
raw := json.RawMessage(`{"foo":"bar"}`)
j, err := json.Marshal(&raw)
if err != nil {
panic(err)
}
fmt.Println(string(j))
}

关于json - 编码 json.RawMessage 返回 base64 编码的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24229205/

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