importar - r get json from url
ImportaciĆ³n de datos de un archivo JSON a R (6)
Si la URL es https, como se usa para Amazon S3, entonces use getURL
json <- fromJSON(getURL(''https://s3.amazonaws.com/bucket/my.json''))
¿Hay alguna manera de importar datos de un archivo JSON a R? Más específicamente, el archivo es una matriz de objetos JSON con campos de cadena, objetos y matrices. El paquete RJSON no es muy claro sobre cómo lidiar con este http://cran.r-project.org/web/packages/rjson/rjson.pdf .
Un paquete alternativo es RJSONIO. Para convertir una lista anidada, lapply puede ayudar:
l <- fromJSON(''[{"winner":"68694999", "votes":[
{"ts":"Thu Mar 25 03:13:01 UTC 2010", "user":{"name":"Lamur","user_id":"68694999"}},
{"ts":"Thu Mar 25 03:13:08 UTC 2010", "user":{"name":"Lamur","user_id":"68694999"}}],
"lastVote":{"timestamp":1269486788526,"user":
{"name":"Lamur","user_id":"68694999"}},"startPrice":0}]''
)
m <- lapply(
l[[1]]$votes,
function(x) c(x$user[''name''], x$user[''user_id''], x[''ts''])
)
m <- do.call(rbind, m)
da información sobre los votos en su ejemplo.
paquetes:
- biblioteca (httr)
- biblioteca (jsonlite)
He tenido problemas al convertir json a dataframe / csv. Para mi caso lo hice:
Token <- "245432532532"
source <- "http://......."
header_type <- "applcation/json"
full_token <- paste0("Bearer ", Token)
response <- GET(n_source, add_headers(Authorization = full_token, Accept = h_type), timeout(120), verbose())
text_json <- content(response, type = ''text'', encoding = "UTF-8")
jfile <- fromJSON(text_json)
df <- as.data.frame(jfile)
luego de df a csv.
En este formato, debería ser fácil convertirlo a múltiples .csvs si es necesario.
La parte importante es que la función de contenido debe tener type = ''text''
.
jsonlite
importará el JSON en un marco de datos. Opcionalmente puede aplanar objetos anidados. Las matrices anidadas serán marcos de datos.
> library(jsonlite)
> winners <- fromJSON("winners.json", flatten=TRUE)
> colnames(winners)
[1] "winner" "votes" "startPrice" "lastVote.timestamp" "lastVote.user.name" "lastVote.user.user_id"
> winners[,c("winner","startPrice","lastVote.user.name")]
winner startPrice lastVote.user.name
1 68694999 0 Lamur
> winners[,c("votes")]
[[1]]
ts user.name user.user_id
1 Thu Mar 25 03:13:01 UTC 2010 Lamur 68694999
2 Thu Mar 25 03:13:08 UTC 2010 Lamur 68694999
Primero instale el paquete RJSONIO y RCurl:
install.packages("RJSONIO")
install.packages("(RCurl")
Pruebe el siguiente código usando RJSONIO en la consola
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)
Primero instale el paquete rjson
:
install.packages("rjson")
Entonces:
library("rjson")
json_file <- "http://api.worldbank.org/country?per_page=10®ion=OED&lendingtype=LNX&format=json"
json_data <- fromJSON(paste(readLines(json_file), collapse=""))
Actualización: desde la versión 0.2.1
json_data <- fromJSON(file=json_file)