读取大型json文件的第n个元素

时间:2018-01-29 20:59:16

标签: json r

我有大量的35MB json文件(两年一小时一个) - 它们是来自气象站的录音,每5秒(720 / h)有一个记录。他们需要大约45秒才能导入R,但我希望能够通过它们并提取单个记录。

以下是一个例子:

library(jsonlite)

x <- list(one = list(b = 0.1, c = 0.3),
          two = list(b = 0.2, c = 0.2))
y <- toJSON(x)
setwd(tempdir())
writeLines(y, 'foo.json')

从文件foo.json,我希望能够只读取元素1或元素1 b

对于那些对非繁琐案例感兴趣的人,在Jan 5 2018 is here的这个文件中,我想导入名为&#39; spectrum&#39;的 n 元素。

1 个答案:

答案 0 :(得分:2)

您可以使用系统JSON解析器,并通过?system命令控制它。

例如,我喜欢jq(如果您有兴趣,还有一个R pacakge,称为jqr

## install jq from 
## https://stedolan.github.io/jq/download/

## print the result of extracting 'one'
curlString <- paste0("cat '", tempdir(), "/foo.json' | jq -r '.one'")
system(curlString)
# {
#   "b": [
#       0.1
#       ],
#   "c": [
#       0.3
#       ]
# }

## return the result of extracting 'one.b' to R
curlString <- paste0("cat '", tempdir(), "/foo.json' | jq -r '.one.b'")
res <- system(curlString, intern = T)
paste0(res, collapse = "")
# "[  0.1]"