You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jsonlite或其他R包将数据转为指定结构的JSON?

将R数据框转换为指定结构的JSON

原始数据框

fb <- structure(list(full = c("f1", "f2"), semiabrv = c("s1", "s2"), 
                     abrv = c("a1", "a2")), row.names = 1:2, class = "data.frame")

默认转换的问题

使用jsonlite::toJSON(pretty=TRUE)会生成数组型JSON,但我们需要以full列值为键、对应semiabrv和abrv为数组值的对象结构。

解决方案

核心思路是先将数据框转换为命名列表,再用jsonlite转换为目标JSON:

方法1:Base R + jsonlite

# 构造以full列为名称的列表,每个元素是对应semiabrv和abrv的向量
result_list <- setNames(
  lapply(1:nrow(fb), function(i) c(fb$semiabrv[i], fb$abrv[i])),
  fb$full
)

# 转换为目标JSON结构
jsonlite::toJSON(result_list, pretty = TRUE)

方法2:purrr + jsonlite(tidyverse风格)

library(purrr)

# 按full列拆分数据框,提取对应列组成向量
result_list <- fb %>%
  split(.$full) %>%
  map(~ c(.$semiabrv, .$abrv))

# 生成JSON
jsonlite::toJSON(result_list, pretty = TRUE)

输出结果

执行后会得到你期望的JSON结构:

{
  "f1": ["s1", "a1"],
  "f2": ["s2", "a2"]
}

内容的提问来源于stack exchange,提问作者Minyi Han

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:01:19