用R解析JSONP

时间:2012-02-26 17:40:43

标签: r jsonp

基于我之前的问题here,R可以解析JSONP对象吗?我已成功使用RJSONIO从Web读取/解析JSON对象。

我遇到了一个JSONP的Feed。当我尝试使用fromJSON()时,会返回一个空列表。

非常感谢任何帮助。保持在R内是首选。提前谢谢。

1 个答案:

答案 0 :(得分:3)

要解析JSONP内容,您可以删除围绕JSON内容的函数调用(如PHP中所述here),然后像解析标准JSON那样解析内容。 / p>

要在R中执行此操作,请尝试以下方式:

j  <- readLines('http://live.nhl.com/GameData/20112012/2011020908/Roster.jsonp')
j <- sub('[^\\{]*', '', j) # remove function name and opening parenthesis
j <- sub('\\)$', '', j) # remove closing parenthesis
library(RJSONIO)
res <- fromJSON(j)

# example output:
unlist(lapply(res$data$home$skaters$player, function(x) x$lname))
 [1] "Greene"       "Zubrus"       "Parise"       "Ponikarovsky"
 [5] "Henrique"     "Sykora"       "Josefson"     "Kovalchuk"   
 [9] "Bernier"      "Carter"       "Harrold"      "Clarkson"    
[13] "Salvador"     "Janssen"      "Elias"        "Volchenkov"  
[17] "Fayne"        "Taormina" 

我不熟悉JSON,也不熟悉JSONP,所以我不确定是否可能遇到多个函数调用包装器的JSONP内容。如果是这样,您需要稍微修改sub模式。如果您想将我指向您的JSONP Feed,我可以相应地修改此解决方案。 RJSONIO也可能提供比lapply更简单的方法来提取列表元素。