首页 > 解决方案 > 无法使用 R 从 API 中提取数据

问题描述

我在下面提到了 R 中的数据框:

东风

ID        Code
PO-1      123
PO-3      345
PO-4      222

我想通过IDin api 获取 JSON 的特定响应。

我有像“https://test.com/path/code-info?ID=PO-1”这样的api,带有标头代码(x892edrsre34434f)。

JSON 格式:

{"test":1,"FormDetails":{"CusName":"Alex",
"City":"NYC","limit":null,"pincode":null,
"refID":"123456",
"channelID":"YUT009"}}

我想从每个 API 输出中提取CusName和,并用我的来获得以下输出。refIDIDrbindDF

ID        Code     CusName      refID
PO-1      123      Alex         YUT009
PO-3      345      Carla        YUT098
PO-4      222      Tim          YUT124

我努力了:

Get_Df<-GET("https://***.com", 
    path  = "path/code-info?Id=",
    query = "PO-1", 
    add_headers(token, API key))

标签: rdataframedplyrtidyversejsonlite

解决方案


首先,您的 get 查询似乎无法正常工作,请尝试

httr::GET(
  "https://test.com", 
  path  = "path/code-info",
  query = list(Id = "PO-1"),
  add_headers(token, API key)
)

或者

httr::GET(
  "https://test.com", 
  path = paste0("path/code-info?Id=", "PO-1"),
  add_headers(token, API key)
)

然后使用jsonlite或其他httr::content()类型来读取您的 JSON

test_list <- jsonlite::fromJSON(test)
test_list$FormDetails$CusName
test_list$FormDetails$refID

然后,您可以首先循环您的数据框以获取所有响应,一旦将它们包含在列表中,将所有相关信息提取到向量中。我将lapply用于第一个循环和purrr提取。为了进一步帮助您,我需要有关数据的更多信息。


推荐阅读