使用每行记录的新行保存R JSON对象

时间:2017-12-21 19:25:13

标签: json r

我试图保存JSON对象,其中每一行都是一条记录。如何保存JSON对象以使行数等于记录数(下例中为5)?

  library(jsonlite)
  df=mtcars[1:5,]
  x <- jsonlite::toJSON(df)
  # remove brackets
  x=substr(x,2,nchar(x)-1)
  write_lines(x,"tmp.json")

3 个答案:

答案 0 :(得分:3)

使用jsonlite::stream_out

df <- mtcars[1:5,]
jsonlite::stream_out(df, file('tmp.json'))

给出换行符分隔的JSON或&#34; ndjson&#34;

答案 1 :(得分:2)

这可能会起到作用:

x2 = strsplit(x, '\\},\\{')
write.table(x2,"tmp.json")

答案 2 :(得分:0)

jsonlite::stream_out仅适用于平面data.frame对象:

jsonlite::stream_out (list (iris, mtcars)) # error!

只需使用writeLines,就可以使用更完整的换行符来编写更复杂的结构:

x <- jsonlite::toJSON (list (iris, mtcars), pretty = TRUE)
con <- file ("tmp.json")
writeLines (x, con)
close (con)

jsonlite::fromJSON会直接阅读。