登录
首页 >  Golang >  Go问答

检查 JSON 中API字段的数据类型时的操作

来源:stackoverflow

时间:2024-03-02 18:39:24 239浏览 收藏

今天golang学习网给大家带来了《检查 JSON 中API字段的数据类型时的操作》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

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

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

服务器有一些回复

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

golang 解组错误,无法将字符串转换为回复类型


解决方案


正如评论中提到的,您需要实现 json.Unmarshaler 接口来处理这种情况。

假设我们从这些结构开始,我们可以看到需要自定义逻辑的字段是 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 中API字段的数据类型时的操作》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>