使用jsonr读取多行JSON至R DataFrame仅读首行的解决方法
解决JSON Lines文件导入R DataFrame的问题
嘿,我来帮你搞定这个问题~你遇到的情况是因为你的JSON文件是JSON Lines格式(每行一个独立的JSON对象),而jsonr::fromJSON()默认是解析单个完整的JSON结构,所以它只读取了第一行就认为解析完成了。下面给你几个实用的解决方案:
方法1:用专门的JSON Lines工具包(最推荐)
R里有个jsonlines包就是专门处理这种每行一个JSON对象的文件的,用起来超方便:
- 先安装包:
install.packages("jsonlines")
- 读取文件并转成DataFrame:
library(jsonlines) df <- read_json_lines("file.json")
这样直接就能得到包含所有3行数据的DataFrame啦。
方法2:手动逐行解析(不用装新包)
如果你不想额外安装包,可以自己逐行读取然后合并结果:
- 先把文件所有行读进来:
lines <- readLines("file.json")
- 用
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
相关产品推荐
相关产品推荐

