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

在R中读取多个JSON文件遇解析错误,求解决方法

解决R解析多JSON文件时的"trailing garbage"错误

错误原因

你的JSON文件不是标准的单个JSON对象/数组,而是多个JSON对象直接拼接(比如}{连在一起),或者是未按行分隔的JSON Lines格式,fromJSON无法直接解析这种非标准结构,因此抛出"trailing garbage"错误。

解决方案

根据你的文件类型选择对应的处理方式:

情况1:JSON Lines格式(每行一个JSON对象)

如果每个JSON对象单独占一行,使用jsonlite的stream_in函数(注意正确调用方式):

library(jsonlite)

# 批量读取并解析所有JSON文件
ldf <- lapply(filenames, function(file_path) {
  stream_in(file(file_path), verbose = FALSE)
})

# 将所有结果合并为一个数据框(可选)
combined_data <- do.call(rbind, ldf)

情况2:无分隔的拼接式JSON对象(比如}{直接连接)

如果文件是多个JSON对象无分隔符拼接,需要先拆分内容再逐个解析:

library(jsonlite)

# 定义自定义解析函数
parse_multi_json <- function(file_path) {
  # 读取并合并文件所有内容
  raw_content <- readLines(file_path, warn = FALSE)
  full_content <- paste(raw_content, collapse = "")
  
  # 使用正则拆分多个JSON对象(匹配}{的边界)
  split_json <- strsplit(full_content, "(?<=\\})(?=\\{)", perl = TRUE)[[1]]
  
  # 逐个解析每个JSON片段
  lapply(split_json, fromJSON)
}

# 批量处理所有文件
ldf <- lapply(filenames, parse_multi_json)

# 合并为单个数据框(可选)
combined_data <- do.call(rbind, unlist(ldf, recursive = FALSE))

为什么之前的尝试无效

  • fromJSON仅支持解析单个标准JSON对象或数组,无法处理多对象拼接结构;
  • stream_in默认要求每行一个JSON对象,若你的文件没有按行分隔JSON,它也无法正确识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:50:40