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

R语言将httr GET请求返回的JSON响应转换为数据框的方法

R语言HasOffers嵌套JSON响应转规整数据框实现方案

前置依赖

需要提前安装并加载3个核心包:

# 安装(仅需运行一次)
install.packages(c("httr", "jsonlite", "dplyr"))
# 加载
library(httr)
library(jsonlite)
library(dplyr)

实现步骤

  1. 发起接口请求并校验响应
# 替换为你的实际接口地址和请求参数
api_resp <- GET(
  url = "https://你的HasOffers接口域名/endpoint",
  query = list(
    Method = "Stats.getStats",
    NetworkId = "你的网络ID",
    ApiKey = "你的接口密钥",
    # 其他查询参数
    fields = c("Stat.clicks", "Stat.conversions", "Affiliate.company")
  )
)
# 校验请求是否成功,失败则直接抛出错误
stop_for_status(api_resp)
  1. 解析并展平嵌套JSON
    优先用jsonlite的自动展平特性,无需手动遍历嵌套列表:
# 解析JSON时开启flatten,自动将嵌套对象的键以.连接生成平级字段
parsed_json <- fromJSON(rawToChar(api_resp$content), flatten = TRUE)
# 提取目标层级的原始数据
raw_stats <- parsed_json$data$data
  1. 筛选字段生成最终数据框
final_df <- raw_stats %>%
  # 保留所有Stat字段 + Affiliate.company字段
  select(starts_with("Stat."), Affiliate.company) %>%
  # 可选:去掉Stat.前缀,简化列名
  rename_with(.fn = ~gsub("^Stat\\.", "", .x), .cols = starts_with("Stat."))

兼容rjson的备选方案(无需jsonlite)

如果你坚持使用rjson解析,可以用base R的遍历逻辑实现:

library(rjson)
parsed_json <- fromJSON(rawToChar(api_resp$content))
target_list <- parsed_json$data$data

# 遍历每条记录拼接目标字段
processed_rows <- lapply(target_list, function(item) {
  c(item$Stat, Affiliate.company = item$Affiliate$company)
})

# 列表转数据框
final_df <- do.call(rbind.data.frame, c(processed_rows, stringsAsFactors = FALSE))
# 重置行号
rownames(final_df) <- NULL

注意事项

  • 如果存在缺失字段,可在生成数据框后用tidyr::replace_na()补全缺失值
  • 请求参数中的fields字段建议提前指定需要返回的Stat和Affiliate字段,减少无效数据传输

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:24:02