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

R中如何将包含列表列的数据框转换为JSON并保存?

保存已生成的大体积JSON对象的方法

你已经通过toJSON()生成了JSON字符串对象x,直接写入本地文件即可,优先使用writeLines函数,指定编码避免乱码,大文件场景下执行效率很高:

# 直接写入普通JSON文件
writeLines(x, con = "regiones.json", useBytes = TRUE)

如果需要缩小分享体积,可以直接写入gzip压缩格式,大部分数据分析工具都支持直接读取该格式的文件,无需手动解压:

con <- gzfile("regiones.json.gz", open = "w", encoding = "UTF-8")
writeLines(x, con)
close(con)
其他推荐实现方案
  • 一步完成转换和导出:可以直接用jsonlite自带的write_json()函数,不需要提前把JSON字符串存入内存,超大数据框场景下内存占用更低:
jsonlite::write_json(
  x = regiones,
  path = "regiones.json",
  pretty = TRUE,
  auto_unbox = TRUE, # 自动将单值列转为非数组格式,符合通用JSON规范
  useBytes = TRUE
)

auto_unbox参数不会影响你数据框里的列表类型列(比如geometry列),只会将codigo_region这类单值字段从["16"]转为"16",和你当前控制台输出的结构完全一致。

  • 地理数据专用方案:从你输出的geometry字段判断,你的regiones大概率是sf类地理数据框,更推荐直接用sf包导出标准GeoJSON格式,兼容性更强,所有GIS工具、前端可视化库都可直接识别:
sf::st_write(regiones, "regiones.geojson", delete_dsn = TRUE)

这个方法不需要额外处理geometry列的结构,导出的文件完全符合OGC地理数据标准,比手动转JSON更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:06:03