gpt4 book ai didi

json - 如何在解码 JSON 时检查提供的 api 字段的类型

转载 作者:行者123 更新时间:2023-12-01 22:39:37 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Handling different types when unmarshalling a json [duplicate]

(3 个回答)


2年前关闭。




如何解码 JSON 响应,其中空字段值作为字符串从服务器返回,而其他时间作为对象返回?

{
"replies": "" // empty field from server
}

服务器有一些回复

{
"replies": {
"author" : "fooname"
}
}


golang 解码错误,因为无法将字符串转换为类型

最佳答案

如评论中所述,您需要实现 json.Unmarshaler 处理这种情况的接口(interface)。

假设我们从这些结构体开始,我们可以看到需要自定义逻辑的字段是 Replies 类型。 :

type Response struct {
Replies Replies `json:"replies"`
}

type Replies struct {
*realResp
}

// Contains actual data
type realResp struct {
Author string `json:"author"`
}

现在我们可以实现 UnmarshalJSON方法:
func (r *Replies) UnmarshalJSON(b []byte) error {
if string(b) == "\"\"" {
return nil // Do nothing; you might also want to return an error
}
r.realResp = &realResp{} // Initialize r.realResp
return json.Unmarshal(b, r.realResp)
}

注意指针接收器,以便 UnmarshalJSON 可以修改 r .

也可以看 this full example .

关于json - 如何在解码 JSON 时检查提供的 api 字段的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59563070/

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