You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析IMF JSON RESTful API的httr2请求结果获取数据?

IMF API响应解析解决方案

问题根源

req_perform()返回的是httr2的响应对象,并非直接可用的JSON字符串,直接传入fromJSON()会触发格式错误,必须先从响应对象中提取JSON内容。


方法一:使用httr2内置函数直接解析(推荐)

httr2自带JSON解析工具,无需额外依赖jsonlite:

library(httr2)
library(tidyverse)

# 发送请求并解析JSON
resp <- request("http://dataservices.imf.org/REST/SDMX_JSON.svc/CompactData/IFS/PCPI_IX?startPeriod=2015&endPeriod=2020") %>% 
  req_perform() %>% 
  resp_body_json(simplifyVector = TRUE)

# 提取实际数据并转为数据框
data_df <- as.data.frame(resp$CompactData$DataSet$Series$Obs)

方法二:结合jsonlite解析

若坚持使用jsonlite,需先将响应内容转为字符串:

library(httr2)
library(jsonlite)

# 发送请求
resp <- request("http://dataservices.imf.org/REST/SDMX_JSON.svc/CompactData/IFS/PCPI_IX?startPeriod=2015&endPeriod=2020") %>% 
  req_perform()

# 提取字符串格式的JSON后解析
json_content <- resp_body_string(resp)
parsed_data <- fromJSON(json_content, simplifyVector = TRUE)

# 提取数据并转为数据框
data_df <- as.data.frame(parsed_data$CompactData$DataSet$Series$Obs)

补充说明

  • simplifyVector = TRUE参数可将嵌套JSON结构自动转换为更易操作的扁平化格式;
  • IMF API返回的JSON层级较深,实际数据通常位于CompactData$DataSet$Series$Obs路径下,可根据返回结构微调提取路径。

内容的提问来源于stack exchange,提问作者chris_chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:42:03