现在我得到了:
[
{
"full": "f1",
"semiabrv": "s1",
"abrv": "a1"
},
{
"full": "f2",
"semiabrv": "s2",
"abrv": "a2"
}
]
我期望使用什么:
{
"f1": ["s1","a1"],
"f2": ["s2","a2"]
}
MWE:
fb <- structure(list(full = c("f1", "f2"), semiabrv = c("s1", "s2"),
abrv = c("a1", "a2")), row.names = 1:2, class = "data.frame")
fb|>
jsonlite::toJSON(pretty=TRUE)
感谢您的任何想法!
如果有其他可用的软件包,也可以。
最佳答案
我本来打算建议dataframe="column"
,但您的输出假定使用值(在一列中)作为名称进行定制(对于所有其他列的组合)。为此,我们需要自定义代码(但不多)。
jsonlite::toJSON(
do.call(Map,
c(list(f = function(nm, ...) c(...), fb$full), fb[-1])
), pretty = TRUE)
# {
# "f1": ["s1", "a1"],
# "f2": ["s2", "a2"]
# }
虽然它看起来就像我们提供fb$full
作为nm=
(在anonfunc中)然后丢弃它,但我正在大写Map
倾向于使用第一个参数来定义输出的名称。
关于r - 如何使用 jsonlite 或其他包将 csv 转换为 json,第一列作为键,第二列和第三列作为值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74642300/