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

如何从R语言Tidyverse tibble生成指定格式的JSON字符串?

从Tibble生成指定结构JSON的通用方案

示例场景

假设我们有如下tibble数据:

library(tibble)
sample_tbl <- tibble(
  category = c("A", "A", "B", "B"),
  item = c("item1", "item2", "item3", "item4"),
  value = c(10, 20, 30, 40)
)

期望生成的JSON结构为:

{
  "A": [
    {"item": "item1", "value": 10},
    {"item": "item2", "value": 20}
  ],
  "B": [
    {"item": "item3", "value": 30},
    {"item": "item4", "value": 40}
  ]
}

通用解决方案

方法1:结合tidyr::nest与jsonlite

利用tidyverse的嵌套功能先按分组字段聚合数据,再转为命名列表生成JSON:

library(tidyverse)
library(jsonlite)

# 按分组字段嵌套剩余列,转为命名列表
nested_data <- sample_tbl %>%
  group_by(category) %>%
  nest() %>%
  mutate(data = map(data, as.list)) %>%
  deframe()

# 生成格式化后的JSON
output_json <- toJSON(nested_data, pretty = TRUE, auto_unbox = FALSE)

方法2:用purrr::split直接拆分数据框

更简洁的方式,拆分后直接处理生成列表:

library(tidyverse)
library(jsonlite)

# 按分组字段拆分数据框,移除分组列后转为列表结构
split_data <- sample_tbl %>%
  split(.$category) %>%
  map(~ select(., -category) %>% as.list())

# 生成JSON
output_json <- toJSON(split_data, pretty = TRUE)

方案通用性说明

这两种方法都无需编写自定义函数,适配任意多变量场景:

  • 只需调整group_by(方法1)或split(方法2)的分组字段,剩余所有列都会自动嵌套到对应分组的数组中
  • 新增或移除变量时,无需修改核心代码,仅需保证分组字段正确即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:22:41