golang json 获取所有key_请教如何获取这个api的全部数据?

本文讨论了如何使用Golang处理一个返回分页数据的API。JSON响应包含了一个复杂的结构,数据项以数字键存储。作者提供的代码尝试解析此结构,但在处理分页信息和保存数据时遇到问题。他们寻求帮助来正确获取分页信息并从嵌套的`data`字段中提取值以保存到数据库。
摘要由CSDN通过智能技术生成

现在有一个api返回的数据是分页返回,需要分页调用来获取全部数据并保存下来,但是接口的返回json格式比较混乱,新手不太会写,求教。

json返回格式大概类似如下结构:

{

"code": 0,

"msg": "",

"data": {

"0": {

"id": 1,

"state": "2",

"ip": "192.168.0.1",

"date": "2018-04-16 19:37:15"

},

"1": {

"id": 2,

"state": "2",

"ip": "192.168.0.2",

"date": "2018-04-16 19:37:16"

},

"meta": {

"pagination": {

"total": 46,

"per_page": 2,

"current_page": 1,

"total_pages": 23,

"links": {

"next": "/?limit=2&page=1"

}

}

}

}

}

我现在的代码大概思路如下(没法正确运行)

type RespStruct struct {

Code int `json:"code"`

Msg string `json:"msg"`

Data map[string]interface{} `json:"data"`

}

func request(page int, limit int) {

resp := RespStruct{}

api, _ := url.Parse("http://localhost:8080/api/test")

query := api.Query()

query.Set("page", strconv.Itoa(page))

query.Set("limit", strconv.Itoa(limit))

api.RawQuery = query.Encode()

response, err := http.Get(api.String())

if err != nil {

log.Error(err)

return

}

defer response.Body.Close()

body, err := ioutil.ReadAll(response.Body)

if err != nil {

log.Error(err)

return

}

json.Unmarshal([]byte(body), &resp)

if resp.Code != 0 {

return

} else {

for k, v := range resp.Data {

// 以下不知如何写了,伪代码如下

if k == "meta" {

if v["pagination"]["current_page"] >= v[pagination]["total_page"] {

break

} else {

request(page+1, limit)

}

} else {

saveItemInDB(v)

}

}

}

}

在根据分页信息判断是否继续请求的时候 不知道怎么拿分页信息。然后在保存的时候也没法直接去v里面的值。求指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值