请求协助:将新发布API返回结果转换为R语言DataFrame
解决UN Comtrade API返回结果转R语言DataFrame的问题
第一步:修正GET请求的错误
你的GET调用里URL混入了HTTP/1.1(这是HTTP协议版本标识,不属于URL内容),必须移除。另外订阅密钥更规范的传递方式是放在请求头中,修正后的代码如下:
library(httr) library(jsonlite) library(dplyr) # 设置请求头,传入订阅密钥 headers <- add_headers(`subscription-key` = "6509aa2a08d54ca7b47a2fece2ab5bee") # 发送GET请求,移除URL中的无效内容 res <- GET( url = "https://comtradeapi.un.org/data/v1/get/C/A/HS?reporterCode=826&period=2020&partnerCode=000&partner2Code=000&cmdCode=TOTAL&flowCode=M", config = headers )
第二步:验证请求状态
先确认请求是否成功,状态码200代表请求正常:
# 查看返回状态码 status_code(res) # 打印原始返回内容,排查是否为合法JSON rawToChar(res$content) %>% cat()
第三步:解析JSON并转换为DataFrame
UN Comtrade API的返回是嵌套结构,需提取核心数据字段(通常为data)再转成DataFrame:
# 解析JSON内容 json_data <- fromJSON(rawToChar(res$content)) # 提取数据部分转为DataFrame df <- as.data.frame(json_data$data) # 如需用dplyr处理,可转为tibble格式 df_tbl <- as_tibble(json_data$data)
常见排查点
- 若
fromJSON报错,先检查rawToChar(res$content)输出是否为合法JSON:如果是权限/参数错误提示,需核对密钥有效性、参数格式(比如period是否符合API要求的格式)。 - 若返回401/403错误,确认订阅密钥是否过期或输入错误。
内容的提问来源于stack exchange,提问作者melange164
相关产品推荐
相关产品推荐

