用R解析JSON

时间:2010-01-14 03:03:22

标签: json r

我对R来说相当新,但是越多使用它,我就越发现它对SAS或SPSS的影响有多大。正如我所看到的,其中一个主要好处是能够从网络获取和分析数据。我想这是可能的(甚至可能是直截了当的),但我希望解析网上公开的JSON数据。我不是一个程序员,所以你能提供的任何帮助和指导都将不胜感激。即使你给我一个基本的工作实例,我也许可以解决它。

6 个答案:

答案 0 :(得分:84)

来自Omegahat的

RJSONIO是另一个包,它提供了以JSON格式读写数据的工具。

rjson不使用S4 / S3方法,因此不易扩展,但仍然有用。不幸的是,它没有使用矢量化操作,因此对于非平凡数据来说太慢了。类似地,为了将JSON数据读入R,它有点慢,因此不能扩展到大数据,如果这是一个问题。

更新(新套餐2013-12-03):

jsonlite:此包是RJSONIO包的分支。它建立在RJSONIO的解析器之上,但实现了R对象和JSON字符串之间的不同映射。这个包中的C代码主要来自RJSONIO包,R代码已经从头开始重写。除了fromJSONtoJSON的插入式替换之外,该包还具有序列化对象的功能。此外,该软件包还包含大量单元测试,以确保所有边缘情况都经过编码和解码,以便与系统和应用程序中的动态数据一起使用。

答案 1 :(得分:51)

jsonlite包易于使用,并尝试将json转换为数据帧。

示例:

library(jsonlite)

# url with some information about project in Andalussia
url <- 'http://www.juntadeandalucia.es/export/drupaljda/ayudas.json'

# read url and convert to data.frame
document <- fromJSON(txt=url)

答案 2 :(得分:19)

这是缺少的例子

library(rjson)
url <- 'http://someurl/data.json'
document <- fromJSON(file=url, method='C')

答案 3 :(得分:3)

RJSONIO,rjson和jsonlite中的fromJSON()函数不会为复杂的嵌套json对象返回简单的2D data.frame。

要解决此问题,您可以使用 tidyjson 。它接收一个json并始终返回一个data.frame。它目前在CRAN中无法使用,您可以在此处获取:https://github.com/sailthru/tidyjson

更新: tidyjson现已推出,您可以使用install.packages("tidyjson")直接安装

答案 4 :(得分:2)

为了记录,rjson和RJSONIO确实改变了文件类型,但它们本身并没有真正解析。例如,我收到JSON格式的丑陋MongoDB数据,用rjson或RJSONIO转换它,然后使用unlist和吨手动修正来实际解析为可用的矩阵。

答案 5 :(得分:1)

在控制台

中使用RJSONIO尝试以下代码
library(RJSONIO)
library(RCurl)


json_file = getURL("https://raw.githubusercontent.com/isrini/SI_IS607/master/books.json")

json_file2 = RJSONIO::fromJSON(json_file)

head(json_file2)