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

如何批量读取指定路径下多JSON文件并导入R转为dataframe

批量读取多JSON文件合并为R dataframe的实现方法

1. 安装加载所需依赖包

我们主要用到jsonlite处理JSON数据,purrr做批量迭代,dplyr做数据合并:

# 未安装包先执行安装,已安装可跳过该行
install.packages(c("jsonlite", "purrr", "dplyr"))

# 加载依赖包
library(jsonlite)
library(purrr)
library(dplyr)

2. 提取目标路径下所有JSON文件路径

# 替换为你的JSON文件存放路径
target_dir <- "D:/a/b/c"

# 匹配路径下所有后缀为.json的文件,full.names设为TRUE返回完整路径
# recursive设为TRUE会同时读取子文件夹内的JSON,不需要可改为FALSE
json_file_list <- list.files(
  path = target_dir,
  pattern = "\\.json$",
  full.names = TRUE,
  recursive = FALSE
)

3. 批量读取并合并为统一dataframe

根据你的JSON文件存储格式选择对应读取方法:

  • 若为标准单JSON对象/JSON数组格式的文件,使用fromJSON读取:
    full_df <- map_dfr(json_file_list, function(file) {
      # flatten设为TRUE会自动扁平化JSON嵌套结构,避免生成嵌套列
      fromJSON(file, flatten = TRUE)
    })
    
  • 若为每行存储一个JSON对象的多行JSON(ndjson)格式,也就是你提到的「每个文件包含多行数据」的常见场景,使用stream_in读取:
    full_df <- map_dfr(json_file_list, function(file) {
      stream_in(file(file), flatten = TRUE)
    })
    

可选:兼容异常文件的读取方案

如果存在个别JSON文件格式损坏的情况,可以用以下写法跳过错误文件,避免读取中断:

# 定义安全读取函数,读取失败时返回NULL跳过该文件
safe_json_read <- possibly(
  .f = function(file) stream_in(file(file), flatten = TRUE), # 这里可以替换为你需要的fromJSON写法
  otherwise = NULL
)

# 批量读取合并
full_df <- map_dfr(json_file_list, safe_json_read)

读取完成后,full_df就是所有1307个JSON文件合并后的标准dataframe,可直接用于后续数据处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:45:03