在R语言中如何将WTO API返回的嵌套列表转换为DataFrame?
将WTO API返回的嵌套列表转换为可用DataFrame
我尝试通过以下R代码调用WTO的时序数据API获取数据,但返回结果是嵌套列表,无法直接转换成可用的DataFrame,求解决方法:
library(httr) library(readxl) library(tidyverse) library(jsonlite) resp <- GET("https://api.wto.org/timeseries/v1/data?i=ITS_CS_AX6&r=188,222,320,340,558,591,826&p=000&pc=SA,SB,SC,SD,SE,SF,SG,SH,SI,SJ,SK&ps=2010-2020&subscription-key=3134a3b9d8884ba991e0bfe2f2902c4f") df <- fromJSON(rawToChar(resp$content))
返回的resp结构如下:
解决方法
WTO的这个API返回的JSON结构里,核心数据嵌套在df$dataset$data层级下,每个子元素对应一行数据。你可以用dplyr的bind_rows()函数直接将这些嵌套列表合并成标准DataFrame:
# 提取嵌套的核心数据列表 data_rows <- df$dataset$data # 转换为DataFrame final_df <- bind_rows(data_rows)
如果需要提前扁平化JSON结构,也可以在调用fromJSON()时添加flatten = TRUE参数,自动处理部分嵌套结构:
# 解析时直接扁平化嵌套结构 df <- fromJSON(rawToChar(resp$content), flatten = TRUE) # 提取数据部分得到DataFrame final_df <- df$dataset$data
执行完上述代码后,final_df就是可直接使用的结构化DataFrame,包含API返回的所有字段和对应数据。
内容的提问来源于stack exchange,提问作者melange164
相关产品推荐
相关产品推荐

