【发布时间】:2018-04-28 17:49:03
【问题描述】:
我有一个包含 585 个嵌套数组的 json 文件。 585 个数组中的每一个都具有以下结构:
[["12345678", [["12345678912345678", "dummy tweet #hashtag", "2015-05-20 15:33:11", "en"], ["12345678123456781", "dummy tweet again", "2015-05-18 22:08:30", "en"]]]
每个数组都有一个用户id,对应的数组数组有用户的tweet,其中每个数组有tweet id、tweet、日期和语言。
我尝试使用 jsonlite 流在函数中流式传输文件如下test_json = stream_in(file("test.json")) 但我收到以下错误:
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 3189, 607, 219, 3120, 3091
closing file input connection.
然后我阅读了 10 行 test10_json =readLines("test.json", n =10) 对我有用。
现在我想阅读这个 json 并尝试了 fromJSON(test10_json) 但我得到了这个错误:
Error: parse error: trailing garbage
015-05-06 19:18:35", "en"]]] ["123456789", [["5101600420255
(right here) ------^
这意味着当它尝试读取下一个数组/记录(文件的第二行,第二个用户的记录)时会出错。
但是,当我按如下test10_row1 = fromJSON(test10_json[1]) 分别读取每个用户记录时,它会单独读取它们。并创建一个 List of 2
$ : chr "19211550"
$ : chr [1:3189, 1:4]
其中每个 1:3189 都包含一个带有推文 ID、推文、日期和语言的列表。
首先,如果可能的话,我想知道如何在不必读取行的情况下完全读取文件 test.json。
其次,我想在完成第1步之后,如何将所有数组一起解析为R,而不是单独解析。
第三,我想获得一个可以展平的数据框,而不是获取列表列表(对于 585 条记录:585 个列表,每个列表有 2 个列表,每个列表的列表与推文的数量一样多)。
【问题讨论】:
-
会产生此错误:错误:词法错误:json 文本中的无效字符。 test.json (就在这里) ------^