在R中打开JSON文件

时间:2019-06-22 17:16:56

标签: r json

我已从以下site下载了一些数据作为zip文件,并将其提取到我的计算机上。现在,我无法打开包含的json数据文件。

运行以下代码:

install.packages("rjson")
library("rjson")
comp <- fromJSON("statsbomb/data/competitions")

出现此错误:

  

fromJSON(“ statsbomb / data / competitions”)错误:意外字符's'

还有一种方法可以一次加载所有文件,而不是每次都编写单个语句吗?

2 个答案:

答案 0 :(得分:1)

这就是我所做的(Unix系统)。

  1. 克隆Github存储库(标记位置)
git clone https://github.com/statsbomb/open-data.git

  1. 设置工作目录(克隆存储库或将zip文件提取到的目录)。
setwd("path to directory where you cloned the repo")

  1. 读取数据。
  jsonlite::fromJSON("competitions.json")

使用rjsonrjson::fromJSON(file="competitions.json")

  1. 要一次运行所有文件,请将所有.json个文件移动到一个目录,然后使用lapply/assign将对象分配给您的环境。

结果(单个文件):

  competition_id season_id             country_name
1             37         4                  England
2             43         3            International
3             49         3 United States of America
4             72        30            International
         competition_name season_name              match_updated
1 FA Women's Super League   2018/2019    2019-06-05T22:43:14.514
2          FIFA World Cup        2018 2019-05-14T08:23:15.306297
3                    NWSL        2018 2019-05-17T00:35:34.979298
4       Women's World Cup        2019 2019-06-21T16:45:45.211614
             match_available
1    2019-06-05T22:43:14.514
2 2019-05-14T08:23:15.306297
3 2019-05-14T08:02:00.567719
4 2019-06-21T16:45:45.211614

答案 1 :(得分:1)

除非您指定要提供文件(fromJSON),否则函数fromJSON(file = "competitions.json")将JSON字符串作为第一个参数。

您提到的错误来自试图将'statsbomb/data/competitions'解析为字符串而不是文件名的函数。但是,在JSON中,所有内容都括在方括号中,字符串在引号内。因此,s中的"statsbomb"不是有效的第一个字符。

要读取所有json文件,您可以执行以下操作:

lapply(dir("open-data-master/",pattern="*.json",recursive = T), function(x) {
  assign(gsub("/","_",x), fromJSON(file = paste0("open-data-master/",x)), envir = .GlobalEnv)
})

但这需要很长时间才能完成!您可能应该详细说明此功能。例如。在运行lapply调用之前,将通过dir获得的文件列表分成50个块。