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

使用jsonr读取多行JSON至R DataFrame仅读首行的解决方法

解决JSON Lines文件导入R DataFrame的问题

嘿,我来帮你搞定这个问题~你遇到的情况是因为你的JSON文件是JSON Lines格式(每行一个独立的JSON对象),而jsonr::fromJSON()默认是解析单个完整的JSON结构,所以它只读取了第一行就认为解析完成了。下面给你几个实用的解决方案:

方法1:用专门的JSON Lines工具包(最推荐)

R里有个jsonlines包就是专门处理这种每行一个JSON对象的文件的,用起来超方便:

  1. 先安装包:
install.packages("jsonlines")
  1. 读取文件并转成DataFrame:
library(jsonlines)
df <- read_json_lines("file.json")

这样直接就能得到包含所有3行数据的DataFrame啦。

方法2:手动逐行解析(不用装新包)

如果你不想额外安装包,可以自己逐行读取然后合并结果:

  1. 先把文件所有行读进来:
lines <- readLines("file.json")
  1. 用jsonr::fromJSON逐个解析每行,再合并成DataFrame:
library(jsonr)
# 用base R的方法合并
df <- do.call(rbind, lapply(lines, fromJSON))

# 或者用dplyr的bind_rows更稳妥(需要先装dplyr)
# library(dplyr)
# df <- bind_rows(lapply(lines, fromJSON))

方法3:修改源文件为标准JSON数组(适合能编辑文件的情况)

如果可以修改你的JSON文件,把它改成标准的JSON数组格式也能解决问题:
打开file.json,修改内容为:

[{"id":"a","emailAddress":"a@a.com","name":"abc"},
 {"id":"b","emailAddress":"b@b.com","name":"def"},
 {"id":"c","emailAddress":"c@c.com","name":"ghi"}]

也就是开头加[,结尾加],每行之间加逗号。之后再用fromJSON(file="file.json")就能直接读取全部数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:47:31