51

I've create a JSON file, and I need to be able to share the file via email with other collaborators. However, although there are plenty of topics available on handling JSON objects in the R workspace, there are virtually no resources discussing how to actually export a JSON object to a .JSON file.

Here's a simple example:

list1 <- vector(mode="list", length=2)
  list1[[1]] <- c("a", "b", "c")
  list1[[2]] <- c(1, 2, 3)

exportJson <- toJSON(list1)

## Save the JSON to file
save(exportJson, file="export.JSON")

## Attempt to read in the JSON
library("rjson")
json_data <- fromJSON(file="export.JSON")

The final line, attempting to read in the JSON file, results in an error: "Error in fromJSON(file = "export.JSON") : unexpected character 'R'"

Obviously the save() function is not the way to go, but after extensive googling, I have found nothing that says how to export the JSON to a file. Any help would be greatly appreciated.

Nathan Calverley
  • 979
  • 1
  • 6
  • 16

3 Answers3

63

You can use write:

library(RJSONIO)
list1 <- vector(mode="list", length=2)
list1[[1]] <- c("a", "b", "c")
list1[[2]] <- c(1, 2, 3)

exportJson <- toJSON(list1)
> exportJson
[1] "[\n [ \"a\", \"b\", \"c\" ],\n[      1,      2,      3 ] \n]"
write(exportJson, "test.json")
library("rjson")
json_data <- fromJSON(file="test.json")
> json_data
[[1]]
[1] "a" "b" "c"

[[2]]
[1] 1 2 3
jdharrison
  • 30,085
  • 4
  • 77
  • 89
  • 1
    I am using this method but it writes the file in one line. Any idea how can I overpass it? Can see also in this link: http://stackoverflow.com/questions/33958711/changing-values-in-json-file-through-r – Mpizos Dimitris Dec 01 '15 at 00:13
  • But where is the file written to? – PM0087 Sep 08 '20 at 14:00
30

There is also the jsonlite package:

library(jsonlite)

exportJSON <- toJSON(list1)
write(exportJSON, "test.json")
list2 <- fromJSON("test.json")

identical(list1, list2)
James Hirschorn
  • 7,032
  • 5
  • 45
  • 53
  • this showed that list2 wasn't identical to list1 in my case on R 4.1.2 – con Feb 26 '23 at 20:01
  • You are right: I just tried on `R` 4.0.4 and also got `list2` as a `2 x 3` array., instead of a `list`. This was working back in 2019 when I posted my answer. Someone should create a bug report. – James Hirschorn Mar 01 '23 at 17:06
  • For my version of R, RJSONIO seemed to work better – con Mar 01 '23 at 22:33
0

Voici un code qui fonctionne correctement sur R STUDIO en Mai 2023

     #Code to export a data frame to JSON and then reimport it with R STUDIO (May 2023)"
     #Code pour exporter un data frame en JSON et puis le reimporter avec R studio

    #Building datra frame
    #construction du data frame    
    install.packages("RJSONIO")
    library(RJSONIO)
    DF_json <- donnees <- data.frame(nom = c("Alice", "Bob"), age = c(30, 25))
    DF_json

    #transform data frame in JSON file
    #transformation du data frame en fichier JSON
    exportJson <- toJSON(DF_json)
    exportJson

    #Export of data frame in json file
    #Export du data frame en fichier json
    write(exportJson, "C:/Users/u99amo/Downloads/test.json")


    #Import of data frame exported
    #import du data frame exporté
    install.packages("rjson")
    library(rjson)

    json_data <- fromJSON(file="C:/Users/u99amo/Downloads/test.json")
    json_data <- data.frame(json_data)

    #controle
    #contrôle 
    identical(DF_json, json_data)





  • 1
    Merci for your working code. The site guidelines, for better or worse, are that answers should be written in English language: https://stackoverflow.com/help/non-english-questions – Michael Roswell May 04 '23 at 15:55