【发布时间】:2020-12-08 11:53:32
【问题描述】:
我想调用一个提供我所有商店订单的 API。我总共有 86.000 个订单,其中第一个订单的 ID 是 2,最近一个订单的 ID 是 250.000。由于某些我还不知道的原因,订单显然不是连续计数的,但没关系。
我使用 for 循环开始了一个简单的脚本,其中 ID 在每个循环中都会更新,如下所示:
library(jsonlite)
library(httr)
user = "my_name"
token = "xyz"
y = 0
urls = rep("api.com/orders/", 250000)
for(i in urls){
y = y + 1
url = paste0(i, y)
a = httr::GET(url, authenticate(user, token))
a_content = httr:content(a, as = "text", encoding = "UTF-8")
a_json = jsonlite::fromJSON(a_content, flatten = T)
...
}
这里的问题是,只要有一个没有顺序的 ID,循环就会以 "{\"success\":false,\"message\":\"Order by id 1 not found\"}" 停止所以我不得不用一些 if else 语句扩展代码,比如“如果 id 与订单不匹配,请继续执行”下一个订单”。我也想将所有订单写入一个新列表。
任何帮助appriched。
【问题讨论】:
-
你不能从
a_content中提取"success"的值,然后检查是真还是假?
标签: r json api for-loop if-statement