登录
首页 >  Golang >  Go问答

golang解析api返回json问题

来源:SegmentFault

时间:2023-01-27 19:35:50 123浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《golang解析api返回json问题》,介绍一下go,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

现在在用golang写一个http客户端,来请求HTTP返回的json,但是每个接口返回的格式都是一样的如:

{"code": 0,"data": [],"message": "Success"}

像这种格式的话 我们如果定义一个struct或者map都可以通过json.Unmarshal解析出来,但是关键是这个data里面的东西,每个接口里面的结构是不一样的,那么这个有没有什么统一的处理方法呢?
如果说 定义一个如:

type Result struct {
        Code    int    `json:"code"`
        Data    interface{} `json:"data"`
        Message string `json:"message"`
    }

或者map[string]interface{},这种的话 那么这个iterface{}怎么处理data里面的数据呢
比如一个接口返回的数据:

{"code": 0,"data": [{"item": 210263,"status": 0}],"message": "Success"}

{"code": 0,"data": ["cont": 210263,"list": [xxxxxx]}],"message": "Success"}

这种有什么方法可以通用处理么?

正确答案

我一般是这样的:

type BaseResponse struct {
    Code    int    `json:"code"`
    Message string `json:"message"`
}

func (br BaseResponse) Success() bool {
    return br.Code == 0 && br.Message == "success"
}

type AResponse struct {
    BaseResponse
    Data []AData
}

type BResponse struct {
    BaseResponse
    Data BData
}

这样也没什么麻烦的,其实似乎并没有通用的方法,在后面你还是要单独处理不同类型的数据,解析不同格式的Data,类型转换,倒不如一次性定义好,能很大程度上避免出错

文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《golang解析api返回json问题》文章吧,也可关注golang学习网公众号了解相关技术文章。

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