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

如何递归合并多层嵌套JSON对象的同名键(R语言实现)

R语言嵌套JSON同名键深度合并方案

你需要的是递归深度合并嵌套列表的能力,无需自行编写多层循环,有两种成熟实现方式,均支持任意层级的复杂JSON结构处理:

方案1:使用rlist包(最简便,推荐)

rlist包内置的list.merge()函数原生支持递归合并所有层级的同名键,一行代码即可完成需求:

# 首次使用先安装包
install.packages("rlist")
# 加载包
library(rlist)

# 递归合并所有JSON对象,!!!为参数展开操作符
final_object <- list.merge(!!!json_object)

# 可选:转JSON查看输出结果
library(jsonlite)
writeLines(toJSON(final_object, auto_unbox = TRUE, pretty = TRUE))

方案2:自定义递归合并函数(无额外依赖)

如果不想引入第三方包,可以用自定义递归函数配合Reduce完成合并,适配任意嵌套深度的结构:

# 定义递归合并逻辑
recursive_merge <- function(exist_list, new_list) {
  for (key in names(new_list)) {
    # 双方都存在当前键且值均为列表时,递归合并下一层
    if (key %in% names(exist_list) && is.list(exist_list[[key]]) && is.list(new_list[[key]])) {
      exist_list[[key]] <- recursive_merge(exist_list[[key]], new_list[[key]])
    } else {
      # 否则直接赋值/新增键
      exist_list[[key]] <- new_list[[key]]
    }
  }
  return(exist_list)
}

# 批量合并所有JSON对象
final_object <- Reduce(recursive_merge, json_object)

两种方案输出的结构均和你预期的规整结构完全一致,后续处理嵌套层级更多的复杂JSON数据时也无需修改逻辑,直接调用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:06:03