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

VS Code中合并JSON重复键为数组或编号键的解决方案求助

解决VS Code中批量修复JSON重复键的问题

针对你手里数千个存在重复键的JSON文件,以下是两种在VS Code中可行的解决方案,避免工具直接删除重复键:

方案1:VS Code正则替换(单/少量文件快速处理)

如果只是处理单个或少量文件,可以用VS Code的正则查找替换功能,将重复的!is键合并为数组:

  1. 打开目标JSON文件,按下Ctrl+H打开替换面板
  2. 点击面板右上角的.*按钮启用正则模式
  3. 查找内容输入:
"condition":{\s*"!is":\s*(\d+)(?:,\s*"!is":\s*(\d+))(?:,\s*"!is":\s*(\d+))(?:,\s*"!is":\s*(\d+))
  1. 替换内容输入:
"condition":{"!is": [$1, $2, $3, $4]
  1. 点击"替换全部"即可完成单个文件的修复

注意:如果重复键数量不是固定4个,需要调整正则中的捕获组数量,或者分多次替换逐步合并。

方案2:Python脚本批量处理(数千文件高效处理)

针对大量文件,用Python脚本批量遍历处理是最优选择,支持自定义重复键的处理逻辑(合并数组/添加编号):

  1. 在VS Code中新建一个Python文件(比如fix_duplicate_json.py),粘贴以下代码:
import os
import json

def process_duplicate_keys(pairs):
    result = {}
    for key, value in pairs:
        if key in result:
            # 方式1:将重复键的值合并为数组
            if isinstance(result[key], list):
                result[key].append(value)
            else:
                result[key] = [result[key], value]
            
            # 方式2:为重复键添加编号(注释掉方式1,启用下面的代码)
            # count = 1
            # while f"{key}{count}" in result:
            #     count += 1
            # result[f"{key}{count}"] = value
        else:
            result[key] = value
    return result

# 替换为你的JSON文件所在目录
target_directory = "./json_files"

# 遍历目录下所有JSON文件
for file_name in os.listdir(target_directory):
    if file_name.endswith(".json"):
        file_path = os.path.join(target_directory, file_name)
        try:
            with open(file_path, "r", encoding="utf-8") as f:
                # 通过object_pairs_hook捕获所有键值对(包括重复键)
                json_data = json.load(f, object_pairs_hook=process_duplicate_keys)
            
            with open(file_path, "w", encoding="utf-8") as f:
                json.dump(json_data, f, indent=2, ensure_ascii=False)
            
            print(f"已修复:{file_name}")
        except Exception as e:
            print(f"处理失败 {file_name}:{str(e)}")
  1. 修改代码中的target_directory为你的JSON文件实际存放路径
  2. 打开VS Code终端,运行命令:python fix_duplicate_json.py

关键说明

  • 脚本通过object_pairs_hook参数捕获所有键值对,不会丢失重复键的数据
  • 两种处理逻辑二选一:默认是合并为数组,需要添加编号的话,注释掉方式1的代码,启用方式2即可
  • 处理前务必备份所有JSON文件,避免意外数据损失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:18:28