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序列化,但此種情況不方便抓包和直接閱讀,也不優雅。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM