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

如何批量为多目录下的JSON文件添加统一键值对

批量给JSON文件添加指定键值对的R实现

现有文件结构

共24个文件夹(p1至p24),每个文件夹下包含v1至v8的JSON文件,结构示例:

> p1
> --p1_v1.json
> --p1_v2.json
> --p1_v3.json
> --p1_v4.json
> p2
> --p2_v1.json
> --p2_v2.json
> --p2_v3.json
> --p2_v4.json

原始JSON结构

每个JSON文件是包含约10个键值对的对象,值类型涵盖列表、字符串、数字,结构示例:

{ 
  "Element1": "info", 
  "Element2": "info",
  "Element3": [ 
    "Info1",
    "Info2",
    "Info3"
  ]
}

需求

为所有JSON文件添加一个相同的键值对,值为包含15个数字的列表,新增元素示例:

"AdditionalElement": [
  0.998,
  0.768,
  0.394,
  0.123
]

最终每个JSON文件必须包含该新增元素。

尝试的问题代码

以下是尝试的R代码,存在语法错误和逻辑问题:

files <- list.files("P:/new", recursive=T, full.names = TRUE, pattern = 'sub.*\\.json$')
files

json_lst <- lapply(jsonString$new(files)

newlist <- lapply(jsonString$addProperty("newelement", "[5, 6, 3, 2, 7]")

正确实现代码

基于jsonStrings包的正确批量处理代码如下:

# 加载依赖包
library(jsonStrings)

# 获取所有目标JSON文件的完整路径
files <- list.files("P:/new", recursive = TRUE, full.names = TRUE, pattern = "\\.json$")

# 定义要添加的键和对应的值(15个数字的向量)
target_key <- "AdditionalElement"
target_values <- c(0.998, 0.768, 0.394, 0.123, 0.456, 0.789, 0.234, 0.567, 0.890, 0.111, 0.222, 0.333, 0.444, 0.555, 0.666)

# 批量处理每个文件:读取→添加属性→保存
lapply(files, function(file_path) {
  # 读取单个JSON文件为jsonStrings对象
  json_obj <- jsonString$new(file_path)
  # 添加指定键值对
  json_obj$addProperty(target_key, target_values)
  # 将修改后的内容写回原文件
  json_obj$write(file_path)
})

注意事项

  • 若只需匹配特定前缀的JSON文件,可调整pattern参数,比如保留原代码的'sub.*\\.json$'
  • 处理前建议备份所有JSON文件,避免误操作导致数据丢失
  • 确保target_values是数字向量,而非字符串格式的数组,否则会导致JSON值类型错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:07:35