go请求接口返回数据格式不一致解决思路:
比如有数据的时候返回格式是:
{
"code": 0,
"msg": "success",
"result": {
"data": {
"20230105": 1,
"20230106": 2,
}
}
}
没有数据是返回
{
"code": 0,
"msg": "success",
"result": {
"data": []
}
}
解决方法:
//定义结构体:
type DeliverData struct {
Code int `json:"code"`
Msg string `json:"msg"`
Result ResultData `json:"result"`
}
type ResultData struct {
Data interface{} `json:"data"`
}
content := "请求接口返回的数据"
deliverList := new(DeliverData)
json.Unmarshal(content, &deliverList)
resultInterface := deliverList.Result.Data
// interface 转字符串
resultStr := fmt.Sprintf("%v", resultInterface)
//检查字符串是否存在 使用Contains()函数
res2 := strings.Contains(resultStr, ":")
if !res2 {
// 没有数据的时,返回为[]
return nil
}
// 结构体是 interface 转为真实的 数据格式 (map[string]interface{})
infoResult := deliverList.Result.Data.(map[string]interface{})