我试图保存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")
答案 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
会直接阅读。