golang 快速解析api 返回的data数据

Posted 程序与世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 快速解析api 返回的data数据相关的知识,希望对你有一定的参考价值。

一般情况请求一个接口时返回如下格式数据

{
"errno":0,
"errmsg":"success",
"data":"xxxxx" // data值不限类型
}

data 是我们想要的数据,但data中的数据格式是不确定的,通常在Go语言里定义interface类型。

type ApiRet struct {
 ErrNo int `json:"errno"`
 ErrMsg string `json:"errmsg"`
 Data interface `json:"data"`
}

json.Unmarshal一级数据后得到apiRet,开始解析data数据。 data数据怎么解析呢?通常有如下几种办法(情形):

1、直接断言解析成另一个类型数据:apiRet.data.(targetType)。 此种情况适合data里层级少,数据类型确定。

2、通常data的数据较为复杂,接口方也用struct定义的数据,此时apiRet.data 为map类型,值为interface。不能直接去断言,我们也不可能一层一层解析。此时最好的方式是把apiRet.data json.Marshal 一下。再用具体的 struct 接收 json.Unmarshal反解结果。

2.1 接口方也可以把data 的值json序列化,但此种情况不方便抓包和直接阅读,也不优雅。

以上是关于golang 快速解析api 返回的data数据的主要内容,如果未能解决你的问题,请参考以下文章

php怎么解析天气预报api返回的数据

快速解析从 API 以 JSON 形式返回的对象

Golang gin开源实例学习

php获得api返回的json数据后,如何解析?

golang-redis系列——返回值助手函数(二)

golang 非常快速和脏的stackoverflow作业使用Go进行解析