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数据的主要内容,如果未能解决你的问题,请参考以下文章