gpt4 book ai didi

Go:JSON 编码错误

转载 作者:IT王子 更新时间:2023-10-29 01:33:40 26 4
gpt4 key购买 nike

我正在 Go 中构建一个 JSON API,我想以 json 形式返回错误响应。

示例响应:

{
"error": "Invalid request syntax"
}

我认为我可以创建一个实现错误接口(interface)的包装器结构,然后使用 Go 的 json 编码(marshal)拆收器作为一种干净的方式来获取错误的 json 表示:

type JsonErr struct {
Err error `json:"error"`
}
func (t JsonErr) Error() string {
return t.Err.Error()
}

这只会将 JsonErr 编码为 {"error":{}},有没有办法使用默认的 Go json 编码器来编码这个结构,或者我需要快速编写一个为 JsonErr 结构自定义 MarshalJson?

最佳答案

只需执行 json.Marshaler接口(interface):

func main() {
var err error = JsonErr{errors.New("expected")}
json.NewEncoder(os.Stdout).Encode(err)
}

type JsonErr struct {
error
}

func (t JsonErr) MarshalJSON() ([]byte, error) {
return []byte(`{"error": "` + t.Error() + `"}`), nil
}

它不起作用的原因是 json.Marshal 没有检测到错误接口(interface),并且大多数错误类型没有导出字段,因此反射无法显示这些字段。

关于Go:JSON 编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28596376/

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