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

R语言处理AWS S3压缩JSON流时修复格式错误

解决方案

你的问题核心是**gzcon()返回的是连接对象,无法直接用gsub()处理**,必须先把压缩文件内容读取为文本,修复格式后再转为连接供jsonlite::stream_in()解析。以下是修正后的代码:

data_i <- aws.s3::get_object(
  object = objectname_i,
  bucket = bucketname_i,
  region = "eu-central-1",
  as = "raw"
) %>%
  rawConnection() |> 
  gzcon() |> 
  readLines() |>  # 将连接内容读取为逐行的字符向量
  gsub(pattern = "}}]]}$", replacement = "}}]}") |>  # 锚定行尾替换错误格式
  textConnection() |>  # 将修复后的文本转为连接
  jsonlite::stream_in()

关键说明:

  • readLines():把gz压缩文件内容从连接中读取为每行一个元素的字符向量,让字符串处理函数能正常操作。
  • 正则表达式}}]]}$:用$锚定行尾,确保只替换行末的错误结尾}}]]},避免误改文本中间出现的相同字符组合。
  • textConnection():将修复后的字符向量重新转为连接对象,匹配stream_in()的输入要求。

如果文件体积极大,逐行处理内存压力高,可以用readLines()的n参数分块读取处理,再逐块解析,上述代码对大多数场景已适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:35:29