convertir el dataframe a json

Tengo un dataframe que me gusta convertir a formato json:

mi dataframe llamado res1:

library(rjson) structure(list(id = c(1, 2, 3, 4, 5), value = structure(1:5, .Label = c("server1", "server2", "server3", "server4", "server5"), class = "factor")), .Names = c("id", "value"), row.names = c(NA, -5L), class = "data.frame") 

Cuando lo hago:

 toJSON(res1) 

Entiendo esto:

 {"id":[1,2,3,4,5],"value":["server1","server2","server3","server4","server5"]} 

Necesito que este resultado json sea así, ¿alguna idea?

 [{"id":1,"value":"server1"},{"id":2,"value":"server2"},{"id":3,"value":"server3"},{"id":4,"value":"server4"},{"id":5,"value":"server5"}] 

Qué tal si

 library(rjson) x <- toJSON(unname(split(res1, 1:nrow(res1)))) cat(x) # [{"id":1,"value":"server1"},{"id":2,"value":"server2"}, # {"id":3,"value":"server3"},{"id":4,"value":"server4"}, # {"id":5,"value":"server5"}] 

Al usar split() básicamente estamos dividiendo el gran data.frame en un data.frame separado para cada fila. Y al eliminar los nombres de la lista resultante, la función toJSON ajusta los resultados en una matriz en lugar de un objeto con nombre.

El paquete jsonlite existe para abordar exactamente este problema: “Un mapeo práctico y consistente entre los datos JSON y los objetos R”.

Su función toJSON proporciona este resultado deseado con las opciones predeterminadas:

 library(jsonlite) x <- toJSON(res1) cat(x) ## [{"id":1,"value":"server1"},{"id":2,"value":"server2"}, ## {"id":3,"value":"server3"},{"id":4,"value":"server4"}, ## {"id":5,"value":"server5"}] 

Ahora puede simplemente llamar a jsonlite::write_json() directamente en el dataframe.