在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
相关产品推荐
相关产品推荐

