如何将R的tibble/dataframe转换为带数组的多层嵌套JSON
R tibble转两层嵌套JSON实现方法
你当前只做了单层分组汇总,要实现Type→SubType的两层嵌套,需要做两次分层汇总:
- 先按最细粒度(Type+SubType+SubTypeNr)分组,把两个数值列汇总为列表
- 再按Type分组,把所有SubType相关的字段打包为子对象列表
实现代码如下:
library(tidyverse) library(jsonlite) result <- data %>% # 第一层:按最小分组汇总数值为数组 group_by(Type, SubType, SubTypeNr) %>% summarise( SubTypeVal1 = list(SubTypeVal1), SubTypeVal2 = list(SubTypeVal2), .groups = "drop_last" # 保留Type分组,丢弃SubType、SubTypeNr的分组状态 ) %>% # 第二层:按Type分组,把SubType相关内容打包为子列表 summarise( SubTypes = list(pick(SubType, SubTypeNr, SubTypeVal1, SubTypeVal2)), .groups = "drop" ) %>% toJSON(pretty = TRUE, auto_unbox = TRUE) print(result)
参数auto_unbox = TRUE可以把单个字符串/数值的外层数组去掉,匹配你需要的格式。你贴的目标JSON示例存在语法小问题(对象不能直接嵌套对象,正确结构是Type对应SubTypes数组存储所有子类型),上述代码输出的结构完全符合你要的层级逻辑。
内容的提问来源于stack exchange,提问作者Rumpl
相关产品推荐
相关产品推荐

