Importieren von Daten aus einer JSON-Datei in R

Gibt es eine Möglichkeit, Daten aus einer JSON-Datei in R zu importieren? Genauer gesagt ist die Datei ein Array von JSON-Objekten mit Zeichenfolgenfeldern, Objekten und Arrays. Das RJSON-Paket ist nicht sehr klar im Umgang mit dieser http://cran.r-project.org/web/packages/rjson/rjson.pdf .

Solutions Collecting From Web of "Importieren von Daten aus einer JSON-Datei in R"

Installiere zuerst das rjson Paket:

 install.packages("rjson") 

Dann:

 library("rjson") json_file < - "http://api.worldbank.org/country?per_page=10&region=OED&lendingtype=LNX&format=json" json_data <- fromJSON(paste(readLines(json_file), collapse="")) 

Update: seit Version 0.2.1

 json_data < - fromJSON(file=json_file) 

jsonlite importiert den JSON in einen jsonlite . Es kann optional verschachtelte Objekte glätten. Verschachtelte Arrays sind Datenrahmen.

 > 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 

Ein alternatives Paket ist RJSONIO. Um eine verschachtelte Liste zu konvertieren, kann lapply helfen:

 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) 

gibt Auskunft über die Stimmen in Ihrem Beispiel.

Wenn die URL https ist, wie sie für Amazon S3 verwendet wird, verwenden Sie getURL

 json < - fromJSON(getURL('https://s3.amazonaws.com/bucket/my.json')) 

Installieren Sie zunächst das RJSONIO- und RCurl-Paket:

 install.packages("RJSONIO") install.packages("(RCurl") 

Pakete:

  • Bibliothek (httr)
  • Bibliothek (jsonlite)

Ich hatte Probleme beim Konvertieren von JSON in Dataframe / CSV. Für meinen Fall habe ich:

 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) 

dann von df nach csv.

In diesem Format sollte es bei Bedarf einfach in mehrere .csvs konvertiert werden können.

Der wichtige Teil ist die Inhaltsfunktion sollte type = 'text' .

Um zu importieren, musste ich “Markierungen hinzufügen:

json_data < - fromJSON (file = "json_file")

Hoffe das hilft jemandem.

Cormac