将JSON对象保存到文件中。

51

我创建了一个JSON文件,需要能够通过电子邮件与其他协作者分享该文件。然而,虽然有很多关于在R工作区处理JSON对象的主题可用,但几乎没有资源讨论如何将JSON对象实际导出为.JSON文件。

以下是一个简单的示例:

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")

最后一行试图读取JSON文件,结果出现了错误:"Error in fromJSON(file = "export.JSON") : unexpected character 'R'"

显然,save()函数不是解决问题的方法。经过广泛的搜索,我没有发现任何关于如何将JSON导出到文件的信息。如有任何帮助,将不胜感激。


3
只需使用 write(exportJson, file="export.JSON") - jdharrison
4个回答

63

您可以使用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

1
我正在使用这种方法,但它将文件写成一行。有任何想法如何解决?可以在此链接中查看:http://stackoverflow.com/questions/33958711/changing-values-in-json-file-through-r - Mpizos Dimitris
但是文件写入到哪里了? - PM0087

30

还有一个jsonlite包:

library(jsonlite)

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

identical(list1, list2)

这表明在我的 R 4.1.2 版本中,list2 不与 list1 完全相同。 - con
你说得对:我刚刚在 R 4.0.4 上尝试,也得到了一个 2 x 3 的数组list2,而不是一个列表。这在2019年发布我的答案时是有效的。有人应该创建一个错误报告。 - James Hirschorn
对于我的 R 版本,RJSONIO 似乎工作得更好。 - con
对于我的R版本来说,RJSONIO似乎效果更好。 - undefined

0
#我也使用了jsonlite install.packages("jsonlite") library(jsonlite")
exportJSON <- toJSON(df, pretty = TRUE) write_json(exportJSON, "saveAsName.json")

0

这是一段2023年5月能在R STUDIO上正常运行的代码。

     #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
感谢您提供的工作代码。网站指南规定,回答应该用英语书写,无论好坏:https://stackoverflow.com/help/non-english-questions - Michael Roswell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接