使用单元素数组将数据框转换为JSON

mik*_*n32 1 json r jsonlite

假设我有这样的数据:

df <- data.frame(value = c("foo", "bar", "baz"))
Run Code Online (Sandbox Code Playgroud)

一个简单的方法toJSON让我这样:

[{"value":"foo"},{"value":"bar"},{"value":"baz"}]
Run Code Online (Sandbox Code Playgroud)

但是,如果我需要将值作为单个元素数组,我如何构造原始数据?我试过涉及到一些变化c(),list()I().没有什么能让我得到这个输出:

[{"value":["foo"]},{"value":["bar"]},{"value":["baz"]}]
Run Code Online (Sandbox Code Playgroud)

MrF*_*ick 5

要获得所需的排列,您需要一个列表列表

jsonlite::toJSON(list(list("value"="foo"), list("value"="bar"), list("value"="baz")))
# [{"value":["foo"]},{"value":["bar"]},{"value":["baz"]}] 
Run Code Online (Sandbox Code Playgroud)

我们可以在tidyverse函数的帮助mutate_all下将所有列转换为列表.

library(tidyverse)
df %>% mutate_all(as.list) %>% jsonlite::toJSON()
# [{"value":["foo"]},{"value":["bar"]},{"value":["baz"]}] 
Run Code Online (Sandbox Code Playgroud)