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

如何在R中将指定格式XLS转换为自定义嵌套JSON?

用R实现XLS到指定嵌套JSON的转换

完全可以用R实现这个转换,核心思路是读取Excel数据后按需求整理成嵌套列表,再转为目标JSON格式。以下是具体实现步骤和代码:


1. 安装并加载依赖包

需要用到readxl读取Excel文件,jsonlite处理JSON转换:

install.packages(c("readxl", "jsonlite"))
library(readxl)
library(jsonlite)

2. 读取并预处理Excel数据

假设你的Excel文件第一列是子元素类型(如Description/Levels/Units),后续列是JSON的顶层主元素。读取后转置数据,方便按主元素维度处理:

# 读取Excel,将第一列设为行名
df <- read_excel("你的Excel文件路径.xlsx", row_names = TRUE)
# 转置数据,此时行名对应原Excel的列标题(即JSON主元素)
df_t <- t(df) %>% as.data.frame(stringsAsFactors = FALSE)

3. 构建嵌套结构列表

遍历每个主元素,整理非空的子项,其中Levels需进一步嵌套为键值对(值为空字符串):

result_list <- lapply(1:nrow(df_t), function(i) {
  current_row <- df_t[i, , drop = FALSE]
  main_key <- rownames(df_t)[i]
  sub_list <- list()
  
  # 处理Description字段
  desc <- current_row$Description
  if (!is.na(desc) && desc != "") {
    sub_list$Description <- desc
  }
  
  # 处理Units字段
  units <- current_row$Units
  if (!is.na(units) && units != "") {
    sub_list$Units <- units
  }
  
  # 处理Levels字段:收集非空选项生成嵌套对象
  levels_cols <- grep("Level", colnames(current_row), value = TRUE)
  levels_vals <- current_row[, levels_cols, drop = FALSE]
  levels_vals <- levels_vals[!is.na(levels_vals) & levels_vals != ""]
  if (length(levels_vals) > 0) {
    sub_list$Levels <- setNames(rep("", length(levels_vals)), levels_vals)
  }
  
  list(main_key = sub_list)
})

# 合并所有主元素到最终列表
final_list <- do.call(c, lapply(result_list, function(x) x))

4. 转换为格式化JSON

# 生成带缩进的JSON字符串
json_output <- toJSON(final_list, pretty = TRUE, auto_unbox = TRUE)
# 保存到本地文件
write(json_output, "output.json")

这段代码会严格匹配你期望的JSON格式:列标题作为顶层键,Description/Units作为直接子键,Level开头的选项嵌套在Levels下且值为空字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:10:59