gpt4 book ai didi

go - MarshalJSON 一个字符串声明类型

转载 作者:IT王子 更新时间:2023-10-29 02:32:21 25 4
gpt4 key购买 nike

我创建了一个新的声明类型并添加了一个将值编码为 JSON 的方法

type TextOutput string

func (t *TextOutput) MarshalJSON() ([]byte, error) {
return []byte(fmt.Sprintf(`{"data": "%s"}`, t)), nil
}

当我尝试编码该类型的实例时,我得到了返回的原始值。我错过了什么?

var t TextOutput
t = `Test test`
output, err := json.Marshal(t)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(string(output))
}
// prints Test Test. Expected {"data": "Test test"}

最佳答案

您必须将 MarshalJSON 接口(interface)定义为非指针。

func (t TextOutput) MarshalJSON() ([]byte, error) {
return []byte(fmt.Sprintf(`{"data": "%s"}`, t)), nil
}

播放链接:https://play.golang.org/p/lLK6zsAkOi

输出:

{"data":"Test test"}

关于go - MarshalJSON 一个字符串声明类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45492320/

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