Importing data from a JSON file into R [duplicate] Importing data from a JSON file into R [duplicate] json json

Importing data from a JSON file into R [duplicate]

First install the rjson package:



library("rjson")json_file <- ""json_data <- fromJSON(paste(readLines(json_file), collapse=""))

Update: since version 0.2.1

json_data <- fromJSON(file=json_file)

jsonlite will import the JSON into a data frame. It can optionally flatten nested objects. Nested arrays will be data frames.

> library(jsonlite)> winners <- fromJSON("winners.json", flatten=TRUE)> colnames(winners)[1] "winner" "votes" "startPrice" "lastVote.timestamp" "" "lastVote.user.user_id"> winners[,c("winner","startPrice","")]    winner startPrice lastVote.user.name1 68694999          0              Lamur> winners[,c("votes")][[1]]                            ts user.user_id1 Thu Mar 25 03:13:01 UTC 2010     Lamur     686949992 Thu Mar 25 03:13:08 UTC 2010     Lamur     68694999

An alternative package is RJSONIO. To convert a nested list, lapply can help:

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 <-, m)

gives information on the votes in your example.