如何批量为多目录下的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
相关产品推荐
相关产品推荐

